react-native-reanimated 3.9.0-rc.0 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Common/cpp/Fabric/ShadowTreeCloner.cpp +2 -1
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +11 -4
- package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +5 -3
- package/apple/REAModule.mm +14 -29
- package/apple/REANodesManager.mm +7 -6
- package/lib/module/Animated.js.map +1 -1
- package/lib/module/ConfigHelper.js.map +1 -1
- package/lib/module/animationBuilder.js.map +1 -1
- package/lib/module/createAnimatedComponent/InlinePropManager.js +2 -2
- package/lib/module/createAnimatedComponent/InlinePropManager.js.map +1 -1
- package/lib/module/createAnimatedComponent/JSPropsUpdater.js +4 -4
- package/lib/module/createAnimatedComponent/JSPropsUpdater.js.map +1 -1
- package/lib/module/createAnimatedComponent/JSPropsUpdater.web.js.map +1 -1
- package/lib/module/createAnimatedComponent/PropsFilter.js +5 -5
- package/lib/module/createAnimatedComponent/PropsFilter.js.map +1 -1
- package/lib/module/createAnimatedComponent/commonTypes.js.map +1 -1
- package/lib/module/createAnimatedComponent/createAnimatedComponent.js +33 -33
- package/lib/module/createAnimatedComponent/createAnimatedComponent.js.map +1 -1
- package/lib/module/createAnimatedComponent/getViewInfo.js +2 -2
- package/lib/module/createAnimatedComponent/getViewInfo.js.map +1 -1
- 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 +3 -8
- 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 +3 -3
- 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 +1 -0
- 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.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.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.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.map +1 -1
- package/lib/module/reanimated2/commonTypes.js +2 -0
- 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 +3 -4
- package/lib/module/reanimated2/component/PerformanceMonitor.js.map +1 -1
- 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 +2 -4
- package/lib/module/reanimated2/core.js.map +1 -1
- package/lib/module/reanimated2/errors.js +7 -8
- package/lib/module/reanimated2/errors.js.map +1 -1
- package/lib/module/reanimated2/fabricUtils.js +4 -4
- 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 +1 -1
- 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 +14 -6
- 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.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 +4 -5
- 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 +8 -11
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +8 -9
- 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 +1 -2
- 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 +4 -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 +4 -6
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/ProgressTransitionManager.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.js +4 -6
- 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.map +1 -1
- package/lib/module/reanimated2/screenTransition/animationManager.js.map +1 -1
- package/lib/module/reanimated2/screenTransition/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/screenTransition/index.js.map +1 -1
- package/lib/module/reanimated2/screenTransition/presets.js.map +1 -1
- package/lib/module/reanimated2/screenTransition/styleUpdater.js.map +1 -1
- package/lib/module/reanimated2/screenTransition/swipeSimulator.js +1 -1
- package/lib/module/reanimated2/screenTransition/swipeSimulator.js.map +1 -1
- package/lib/module/reanimated2/shareableMappingCache.js.map +1 -1
- package/lib/module/reanimated2/shareables.js +2 -4
- 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.map +1 -1
- package/lib/module/specs/NativeReanimatedModule.js.map +1 -1
- package/lib/typescript/reanimated2/WorkletEventHandler.d.ts +16 -9
- package/lib/typescript/reanimated2/component/LayoutAnimationConfig.d.ts +1 -1
- package/lib/typescript/reanimated2/component/PerformanceMonitor.d.ts +2 -1
- package/lib/typescript/reanimated2/hook/commonTypes.d.ts +5 -0
- package/lib/typescript/reanimated2/hook/useEvent.d.ts +2 -3
- package/lib/typescript/reanimated2/platform-specific/jsVersion.d.ts +1 -1
- package/package.json +18 -14
- package/plugin/build/plugin.js +7 -2
- package/src/createAnimatedComponent/PropsFilter.tsx +1 -1
- package/src/createAnimatedComponent/createAnimatedComponent.tsx +29 -33
- package/src/reanimated2/WorkletEventHandler.ts +98 -39
- package/src/reanimated2/animation/styleAnimation.ts +8 -6
- package/src/reanimated2/hook/commonTypes.ts +9 -0
- package/src/reanimated2/hook/useEvent.ts +4 -4
- package/src/reanimated2/hook/useScrollViewOffset.ts +21 -5
- package/src/reanimated2/js-reanimated/JSReanimated.ts +6 -3
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Easing","assertEasingIsWorklet","defineAnimation","getReduceMotionForAnimation","withTiming","toValue","userConfig","callback","__DEV__","easing","config","duration","inOut","quad","Object","keys","forEach","key","timing","animation","now","startTime","startValue","runtime","current","progress","onStart","value","previousAnimation","type","factory","onFrame","reduceMotion"],"sources":["timing.ts"],"sourcesContent":["'use strict';\nimport type { EasingFunction, EasingFunctionFactory } from '../Easing';\nimport { Easing } from '../Easing';\nimport {\n assertEasingIsWorklet,\n defineAnimation,\n getReduceMotionForAnimation,\n} from './util';\nimport type {\n Animation,\n AnimationCallback,\n Timestamp,\n AnimatableValue,\n ReduceMotion,\n} from '../commonTypes';\n\n/**\n * The timing animation configuration.\n *\n * @param duration - Length of the animation (in milliseconds). Defaults to 300.\n * @param easing - An easing function which defines the animation curve. Defaults to `Easing.inOut(Easing.quad)`.\n * @param reduceMotion - Determines how the animation responds to the device's reduced motion accessibility setting. Default to `ReduceMotion.System` - {@link ReduceMotion}.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/animations/withTiming#config-\n */\ninterface TimingConfig {\n duration?: number;\n reduceMotion?: ReduceMotion;\n easing?: EasingFunction | EasingFunctionFactory;\n}\n\nexport type WithTimingConfig = TimingConfig;\n\nexport interface TimingAnimation extends Animation<TimingAnimation> {\n type: string;\n easing: EasingFunction;\n startValue: AnimatableValue;\n startTime: Timestamp;\n progress: number;\n toValue: AnimatableValue;\n current: AnimatableValue;\n}\n\ninterface InnerTimingAnimation\n extends Omit<TimingAnimation, 'toValue' | 'current'> {\n toValue: number;\n current: number;\n}\n\n// TODO TYPESCRIPT This is temporary type put in here to get rid of our .d.ts file\ntype withTimingType = <T extends AnimatableValue>(\n toValue: T,\n userConfig?: TimingConfig,\n callback?: AnimationCallback\n) => T;\n\n/**\n * Lets you create an animation based on duration and easing.\n *\n * @param toValue - The value on which the animation will come at rest - {@link AnimatableValue}.\n * @param config - The timing animation configuration - {@link TimingConfig}.\n * @param callback - A function called on animation complete - {@link AnimationCallback}.\n * @returns An [animation object](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/glossary#animation-object) which holds the current state of the animation.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/animations/withTiming\n */\nexport const withTiming = function (\n toValue: AnimatableValue,\n userConfig?: TimingConfig,\n callback?: AnimationCallback\n): Animation<TimingAnimation> {\n 'worklet';\n\n if (__DEV__ && userConfig?.easing) {\n assertEasingIsWorklet(userConfig.easing);\n }\n\n return defineAnimation<TimingAnimation>(toValue, () => {\n 'worklet';\n const config: Required<Omit<TimingConfig, 'reduceMotion'>> = {\n duration: 300,\n easing: Easing.inOut(Easing.quad),\n };\n if (userConfig) {\n Object.keys(userConfig).forEach(\n (key) =>\n ((config as any)[key] = userConfig[key as keyof typeof userConfig])\n );\n }\n\n function timing(animation: InnerTimingAnimation, now: Timestamp): boolean {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { toValue, startTime, startValue } = animation;\n const runtime = now - startTime;\n\n if (runtime >= config.duration) {\n // reset startTime to avoid reusing finished animation config in `start` method\n animation.startTime = 0;\n animation.current = toValue;\n return true;\n }\n const progress = animation.easing(runtime / config.duration);\n animation.current =\n (startValue as number) + (toValue - (startValue as number)) * progress;\n return false;\n }\n\n function onStart(\n animation: TimingAnimation,\n value: number,\n now: Timestamp,\n previousAnimation: Animation<TimingAnimation>\n ): void {\n if (\n previousAnimation &&\n (previousAnimation as TimingAnimation).type === 'timing' &&\n (previousAnimation as TimingAnimation).toValue === toValue &&\n (previousAnimation as TimingAnimation).startTime\n ) {\n // to maintain continuity of timing animations we check if we are starting\n // new timing over the old one with the same parameters. If so, we want\n // to copy animation timeline properties\n animation.startTime = (previousAnimation as TimingAnimation).startTime;\n animation.startValue = (\n previousAnimation as TimingAnimation\n ).startValue;\n } else {\n animation.startTime = now;\n animation.startValue = value;\n }\n animation.current = value;\n if (typeof config.easing === 'object') {\n animation.easing = config.easing.factory();\n } else {\n animation.easing = config.easing;\n }\n }\n\n return {\n type: 'timing',\n onFrame: timing,\n onStart: onStart as (animation: TimingAnimation, now: number) => boolean,\n progress: 0,\n toValue,\n startValue: 0,\n startTime: 0,\n easing: () => 0,\n current: toValue,\n callback,\n reduceMotion: getReduceMotionForAnimation(userConfig?.reduceMotion),\n } as TimingAnimation;\n });\n} as withTimingType;\n"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,MAAM,QAAQ,WAAW;AAClC,SACEC,qBAAqB,EACrBC,eAAe,EACfC,2BAA2B,QACtB,QAAQ;;AASf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyBA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAG,SAAAA,CACxBC,OAAwB,EACxBC,UAAyB,EACzBC,QAA4B,EACA;EAC5B,SAAS;;EAET,IAAIC,OAAO,IAAIF,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEG,MAAM,EAAE;IACjCR,qBAAqB,CAACK,UAAU,CAACG,MAAM,CAAC;EAC1C;EAEA,OAAOP,eAAe,CAAkBG,OAAO,EAAE,MAAM;IACrD,SAAS;;IACT,MAAMK,MAAoD,GAAG;MAC3DC,QAAQ,EAAE,GAAG;MACbF,MAAM,EAAET,MAAM,CAACY,KAAK,CAACZ,MAAM,CAACa,IAAI;IAClC,CAAC;IACD,IAAIP,UAAU,EAAE;MACdQ,MAAM,CAACC,IAAI,CAACT,UAAU,CAAC,CAACU,OAAO,CAC5BC,GAAG,IACAP,MAAM,CAASO,GAAG,CAAC,GAAGX,UAAU,CAACW,GAAG,
|
|
1
|
+
{"version":3,"names":["Easing","assertEasingIsWorklet","defineAnimation","getReduceMotionForAnimation","withTiming","toValue","userConfig","callback","__DEV__","easing","config","duration","inOut","quad","Object","keys","forEach","key","timing","animation","now","startTime","startValue","runtime","current","progress","onStart","value","previousAnimation","type","factory","onFrame","reduceMotion"],"sources":["timing.ts"],"sourcesContent":["'use strict';\nimport type { EasingFunction, EasingFunctionFactory } from '../Easing';\nimport { Easing } from '../Easing';\nimport {\n assertEasingIsWorklet,\n defineAnimation,\n getReduceMotionForAnimation,\n} from './util';\nimport type {\n Animation,\n AnimationCallback,\n Timestamp,\n AnimatableValue,\n ReduceMotion,\n} from '../commonTypes';\n\n/**\n * The timing animation configuration.\n *\n * @param duration - Length of the animation (in milliseconds). Defaults to 300.\n * @param easing - An easing function which defines the animation curve. Defaults to `Easing.inOut(Easing.quad)`.\n * @param reduceMotion - Determines how the animation responds to the device's reduced motion accessibility setting. Default to `ReduceMotion.System` - {@link ReduceMotion}.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/animations/withTiming#config-\n */\ninterface TimingConfig {\n duration?: number;\n reduceMotion?: ReduceMotion;\n easing?: EasingFunction | EasingFunctionFactory;\n}\n\nexport type WithTimingConfig = TimingConfig;\n\nexport interface TimingAnimation extends Animation<TimingAnimation> {\n type: string;\n easing: EasingFunction;\n startValue: AnimatableValue;\n startTime: Timestamp;\n progress: number;\n toValue: AnimatableValue;\n current: AnimatableValue;\n}\n\ninterface InnerTimingAnimation\n extends Omit<TimingAnimation, 'toValue' | 'current'> {\n toValue: number;\n current: number;\n}\n\n// TODO TYPESCRIPT This is temporary type put in here to get rid of our .d.ts file\ntype withTimingType = <T extends AnimatableValue>(\n toValue: T,\n userConfig?: TimingConfig,\n callback?: AnimationCallback\n) => T;\n\n/**\n * Lets you create an animation based on duration and easing.\n *\n * @param toValue - The value on which the animation will come at rest - {@link AnimatableValue}.\n * @param config - The timing animation configuration - {@link TimingConfig}.\n * @param callback - A function called on animation complete - {@link AnimationCallback}.\n * @returns An [animation object](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/glossary#animation-object) which holds the current state of the animation.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/animations/withTiming\n */\nexport const withTiming = function (\n toValue: AnimatableValue,\n userConfig?: TimingConfig,\n callback?: AnimationCallback\n): Animation<TimingAnimation> {\n 'worklet';\n\n if (__DEV__ && userConfig?.easing) {\n assertEasingIsWorklet(userConfig.easing);\n }\n\n return defineAnimation<TimingAnimation>(toValue, () => {\n 'worklet';\n const config: Required<Omit<TimingConfig, 'reduceMotion'>> = {\n duration: 300,\n easing: Easing.inOut(Easing.quad),\n };\n if (userConfig) {\n Object.keys(userConfig).forEach(\n (key) =>\n ((config as any)[key] = userConfig[key as keyof typeof userConfig])\n );\n }\n\n function timing(animation: InnerTimingAnimation, now: Timestamp): boolean {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { toValue, startTime, startValue } = animation;\n const runtime = now - startTime;\n\n if (runtime >= config.duration) {\n // reset startTime to avoid reusing finished animation config in `start` method\n animation.startTime = 0;\n animation.current = toValue;\n return true;\n }\n const progress = animation.easing(runtime / config.duration);\n animation.current =\n (startValue as number) + (toValue - (startValue as number)) * progress;\n return false;\n }\n\n function onStart(\n animation: TimingAnimation,\n value: number,\n now: Timestamp,\n previousAnimation: Animation<TimingAnimation>\n ): void {\n if (\n previousAnimation &&\n (previousAnimation as TimingAnimation).type === 'timing' &&\n (previousAnimation as TimingAnimation).toValue === toValue &&\n (previousAnimation as TimingAnimation).startTime\n ) {\n // to maintain continuity of timing animations we check if we are starting\n // new timing over the old one with the same parameters. If so, we want\n // to copy animation timeline properties\n animation.startTime = (previousAnimation as TimingAnimation).startTime;\n animation.startValue = (\n previousAnimation as TimingAnimation\n ).startValue;\n } else {\n animation.startTime = now;\n animation.startValue = value;\n }\n animation.current = value;\n if (typeof config.easing === 'object') {\n animation.easing = config.easing.factory();\n } else {\n animation.easing = config.easing;\n }\n }\n\n return {\n type: 'timing',\n onFrame: timing,\n onStart: onStart as (animation: TimingAnimation, now: number) => boolean,\n progress: 0,\n toValue,\n startValue: 0,\n startTime: 0,\n easing: () => 0,\n current: toValue,\n callback,\n reduceMotion: getReduceMotionForAnimation(userConfig?.reduceMotion),\n } as TimingAnimation;\n });\n} as withTimingType;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -60,10 +60,9 @@ export function scaleMatrix(maybeFlatA, scalar) {
|
|
|
60
60
|
const b = a.map(x => x * scalar);
|
|
61
61
|
return isFlatOnStart ? b : unflatten(b);
|
|
62
62
|
}
|
|
63
|
-
export function getRotationMatrix(angle) {
|
|
63
|
+
export function getRotationMatrix(angle, axis = 'z') {
|
|
64
64
|
'worklet';
|
|
65
65
|
|
|
66
|
-
let axis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'z';
|
|
67
66
|
const cos = Math.cos(angle);
|
|
68
67
|
const sin = Math.sin(angle);
|
|
69
68
|
switch (axis) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isAffineMatrixFlat","x","Array","isArray","length","every","element","isNaN","isAffineMatrix","row","flatten","matrix","flat","unflatten","m","maybeFlattenMatrix","multiplyMatrices","a","b","subtractMatrices","maybeFlatA","maybeFlatB","isFlatOnStart","c","map","_","i","addMatrices","scaleMatrix","scalar","getRotationMatrix","angle","axis","arguments","undefined","cos","Math","sin","norm3d","y","z","sqrt","transposeMatrix","assertVectorsHaveEqualLengths","__DEV__","Error","toString","innerProduct","reduce","acc","projection","u","s","e","subtractVectors","scaleVector","gramSchmidtAlgorithm","a0","a1","a2","a3","u0","u1","u2","u3","e0","e1","e2","e3","rotationMatrix","skewMatrix","decomposeMatrix","unknownTypeMatrix","forEach","translationMatrix","sx","sy","sz","rotationAndSkewMatrix","decomposeMatrixIntoMatricesAndAngles","sinRy","ry","asin","rx","rz","atan2"],"sources":["matrixUtils.tsx"],"sourcesContent":["'use strict';\ntype FixedLengthArray<\n T,\n L extends number,\n PassedObject = [T, ...Array<T>]\n> = PassedObject & {\n readonly length: L;\n [I: number]: T;\n};\n\nexport type AffineMatrix = FixedLengthArray<FixedLengthArray<number, 4>, 4>;\n\nexport type AffineMatrixFlat = FixedLengthArray<number, 16>;\n\ntype TransformMatrixDecomposition = Record<\n 'translationMatrix' | 'scaleMatrix' | 'rotationMatrix' | 'skewMatrix',\n AffineMatrix\n>;\n\ntype Axis = 'x' | 'y' | 'z';\n\ninterface TansformMatrixDecompositionWithAngles\n extends TransformMatrixDecomposition {\n rx: number;\n ry: number;\n rz: number;\n}\n\nexport function isAffineMatrixFlat(x: unknown): x is AffineMatrixFlat {\n 'worklet';\n return (\n Array.isArray(x) &&\n x.length === 16 &&\n x.every((element) => typeof element === 'number' && !isNaN(element))\n );\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function isAffineMatrix(x: unknown): x is AffineMatrix {\n 'worklet';\n return (\n Array.isArray(x) &&\n x.length === 4 &&\n x.every(\n (row) =>\n Array.isArray(row) &&\n row.length === 4 &&\n row.every((element) => typeof element === 'number' && !isNaN(element))\n )\n );\n}\n\nexport function flatten(matrix: AffineMatrix): AffineMatrixFlat {\n 'worklet';\n return matrix.flat() as AffineMatrixFlat;\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function unflatten(m: AffineMatrixFlat): AffineMatrix {\n 'worklet';\n return [\n [m[0], m[1], m[2], m[3]],\n [m[4], m[5], m[6], m[7]],\n [m[8], m[9], m[10], m[11]],\n [m[12], m[13], m[14], m[15]],\n ] as AffineMatrix;\n}\n\nfunction maybeFlattenMatrix(\n matrix: AffineMatrix | AffineMatrixFlat\n): AffineMatrixFlat {\n 'worklet';\n return isAffineMatrix(matrix) ? flatten(matrix) : matrix;\n}\n\nexport function multiplyMatrices(\n a: AffineMatrix,\n b: AffineMatrix\n): AffineMatrix {\n 'worklet';\n return [\n [\n a[0][0] * b[0][0] +\n a[0][1] * b[1][0] +\n a[0][2] * b[2][0] +\n a[0][3] * b[3][0],\n\n a[0][0] * b[0][1] +\n a[0][1] * b[1][1] +\n a[0][2] * b[2][1] +\n a[0][3] * b[3][1],\n\n a[0][0] * b[0][2] +\n a[0][1] * b[1][2] +\n a[0][2] * b[2][2] +\n a[0][3] * b[3][2],\n\n a[0][0] * b[0][3] +\n a[0][1] * b[1][3] +\n a[0][2] * b[2][3] +\n a[0][3] * b[3][3],\n ],\n [\n a[1][0] * b[0][0] +\n a[1][1] * b[1][0] +\n a[1][2] * b[2][0] +\n a[1][3] * b[3][0],\n\n a[1][0] * b[0][1] +\n a[1][1] * b[1][1] +\n a[1][2] * b[2][1] +\n a[1][3] * b[3][1],\n\n a[1][0] * b[0][2] +\n a[1][1] * b[1][2] +\n a[1][2] * b[2][2] +\n a[1][3] * b[3][2],\n\n a[1][0] * b[0][3] +\n a[1][1] * b[1][3] +\n a[1][2] * b[2][3] +\n a[1][3] * b[3][3],\n ],\n [\n a[2][0] * b[0][0] +\n a[2][1] * b[1][0] +\n a[2][2] * b[2][0] +\n a[2][3] * b[3][0],\n\n a[2][0] * b[0][1] +\n a[2][1] * b[1][1] +\n a[2][2] * b[2][1] +\n a[2][3] * b[3][1],\n\n a[2][0] * b[0][2] +\n a[2][1] * b[1][2] +\n a[2][2] * b[2][2] +\n a[2][3] * b[3][2],\n\n a[2][0] * b[0][3] +\n a[2][1] * b[1][3] +\n a[2][2] * b[2][3] +\n a[2][3] * b[3][3],\n ],\n [\n a[3][0] * b[0][0] +\n a[3][1] * b[1][0] +\n a[3][2] * b[2][0] +\n a[3][3] * b[3][0],\n\n a[3][0] * b[0][1] +\n a[3][1] * b[1][1] +\n a[3][2] * b[2][1] +\n a[3][3] * b[3][1],\n\n a[3][0] * b[0][2] +\n a[3][1] * b[1][2] +\n a[3][2] * b[2][2] +\n a[3][3] * b[3][2],\n\n a[3][0] * b[0][3] +\n a[3][1] * b[1][3] +\n a[3][2] * b[2][3] +\n a[3][3] * b[3][3],\n ],\n ];\n}\n\nexport function subtractMatrices<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n maybeFlatB: T\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a: AffineMatrixFlat = maybeFlattenMatrix(maybeFlatA);\n const b: AffineMatrixFlat = maybeFlattenMatrix(maybeFlatB);\n\n const c = a.map((_, i) => a[i] - b[i]) as AffineMatrixFlat;\n return isFlatOnStart ? (c as T) : (unflatten(c) as T);\n}\n\nexport function addMatrices<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n maybeFlatB: T\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a = maybeFlattenMatrix(maybeFlatA);\n const b = maybeFlattenMatrix(maybeFlatB);\n\n const c = a.map((_, i) => a[i] + b[i]) as AffineMatrixFlat;\n return isFlatOnStart ? (c as T) : (unflatten(c) as T);\n}\n\nexport function scaleMatrix<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n scalar: number\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a = maybeFlattenMatrix(maybeFlatA);\n\n const b = a.map((x) => x * scalar) as AffineMatrixFlat;\n return isFlatOnStart ? (b as T) : (unflatten(b) as T);\n}\n\nexport function getRotationMatrix(\n angle: number,\n axis: Axis = 'z'\n): AffineMatrix {\n 'worklet';\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n switch (axis) {\n case 'z':\n return [\n [cos, sin, 0, 0],\n [-sin, cos, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 1],\n ];\n case 'y':\n return [\n [cos, 0, -sin, 0],\n [0, 1, 0, 0],\n [sin, 0, cos, 0],\n [0, 0, 0, 1],\n ];\n case 'x':\n return [\n [1, 0, 0, 0],\n [0, cos, sin, 0],\n [0, -sin, cos, 0],\n [0, 0, 0, 1],\n ];\n }\n}\n\nfunction norm3d(x: number, y: number, z: number) {\n 'worklet';\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nfunction transposeMatrix(matrix: AffineMatrix): AffineMatrix {\n 'worklet';\n const m = flatten(matrix);\n return [\n [m[0], m[4], m[8], m[12]],\n [m[1], m[5], m[9], m[13]],\n [m[2], m[6], m[10], m[14]],\n [m[3], m[7], m[11], m[15]],\n ];\n}\n\nfunction assertVectorsHaveEqualLengths(a: number[], b: number[]) {\n 'worklet';\n if (__DEV__ && a.length !== b.length) {\n throw new Error(\n `[Reanimated] Cannot calculate inner product of two vectors of different lengths. Length of ${a.toString()} is ${\n a.length\n } and length of ${b.toString()} is ${b.length}.`\n );\n }\n}\n\nfunction innerProduct(a: number[], b: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(a, b);\n return a.reduce((acc, _, i) => acc + a[i] * b[i], 0);\n}\n\nfunction projection(u: number[], a: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(u, a);\n const s = innerProduct(u, a) / innerProduct(u, u);\n return u.map((e) => e * s);\n}\n\nfunction subtractVectors(a: number[], b: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(a, b);\n return a.map((_, i) => a[i] - b[i]);\n}\n\nfunction scaleVector(u: number[], a: number) {\n 'worklet';\n return u.map((e) => e * a);\n}\n\nfunction gramSchmidtAlgorithm(matrix: AffineMatrix): {\n rotationMatrix: AffineMatrix;\n skewMatrix: AffineMatrix;\n} {\n // Gram-Schmidt orthogonalization decomposes any matrix with non-zero determinant into an orthogonal and a triangular matrix\n // These matrices are equal to rotation and skew matrices respectively, because we apply it to transformation matrix\n // That is expected to already have extracted the remaining transforms (scale & translation)\n 'worklet';\n const [a0, a1, a2, a3] = matrix;\n\n const u0 = a0;\n const u1 = subtractVectors(a1, projection(u0, a1));\n const u2 = subtractVectors(\n subtractVectors(a2, projection(u0, a2)),\n projection(u1, a2)\n );\n const u3 = subtractVectors(\n subtractVectors(\n subtractVectors(a3, projection(u0, a3)),\n projection(u1, a3)\n ),\n projection(u2, a3)\n );\n\n const [e0, e1, e2, e3] = [u0, u1, u2, u3].map((u) =>\n scaleVector(u, 1 / Math.sqrt(innerProduct(u, u)))\n );\n\n const rotationMatrix: AffineMatrix = [\n [e0[0], e1[0], e2[0], e3[0]],\n [e0[1], e1[1], e2[1], e3[1]],\n [e0[2], e1[2], e2[2], e3[2]],\n [e0[3], e1[3], e2[3], e3[3]],\n ];\n\n const skewMatrix: AffineMatrix = [\n [\n innerProduct(e0, a0),\n innerProduct(e0, a1),\n innerProduct(e0, a2),\n innerProduct(e0, a3),\n ],\n [0, innerProduct(e1, a1), innerProduct(e1, a2), innerProduct(e1, a3)],\n [0, 0, innerProduct(e2, a2), innerProduct(e2, a3)],\n [0, 0, 0, innerProduct(e3, a3)],\n ];\n return {\n rotationMatrix: transposeMatrix(rotationMatrix),\n skewMatrix: transposeMatrix(skewMatrix),\n };\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function decomposeMatrix(\n unknownTypeMatrix: AffineMatrixFlat | AffineMatrix\n): TransformMatrixDecomposition {\n 'worklet';\n const matrix = maybeFlattenMatrix(unknownTypeMatrix);\n\n // normalize matrix\n if (matrix[15] === 0) {\n throw new Error('[Reanimated] Invalid transform matrix.');\n }\n matrix.forEach((_, i) => (matrix[i] /= matrix[15]));\n\n const translationMatrix: AffineMatrix = [\n [1, 0, 0, 0],\n [0, 1, 0, 0],\n [0, 0, 1, 0],\n [matrix[12], matrix[13], matrix[14], 1],\n ];\n const sx = matrix[15] * norm3d(matrix[0], matrix[4], matrix[8]);\n const sy = matrix[15] * norm3d(matrix[1], matrix[5], matrix[9]);\n const sz = matrix[15] * norm3d(matrix[2], matrix[6], matrix[10]);\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const scaleMatrix: AffineMatrix = [\n [sx, 0, 0, 0],\n [0, sy, 0, 0],\n [0, 0, sz, 0],\n [0, 0, 0, 1],\n ];\n\n const rotationAndSkewMatrix: AffineMatrix = [\n [matrix[0] / sx, matrix[1] / sx, matrix[2] / sx, 0],\n [matrix[4] / sy, matrix[5] / sy, matrix[6] / sy, 0],\n [matrix[8] / sz, matrix[9] / sz, matrix[10] / sz, 0],\n [0, 0, 0, 1],\n ];\n\n const { rotationMatrix, skewMatrix } = gramSchmidtAlgorithm(\n rotationAndSkewMatrix\n );\n\n return {\n translationMatrix,\n scaleMatrix,\n rotationMatrix,\n skewMatrix,\n };\n}\n\nexport function decomposeMatrixIntoMatricesAndAngles(\n matrix: AffineMatrixFlat | AffineMatrix\n): TansformMatrixDecompositionWithAngles {\n 'worklet';\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { scaleMatrix, rotationMatrix, translationMatrix, skewMatrix } =\n decomposeMatrix(matrix);\n\n const sinRy = -rotationMatrix[0][2];\n\n const ry = Math.asin(sinRy);\n let rx;\n let rz;\n if (sinRy === 1 || sinRy === -1) {\n rz = 0;\n rx = Math.atan2(sinRy * rotationMatrix[0][1], sinRy * rotationMatrix[0][2]);\n } else {\n rz = Math.atan2(rotationMatrix[0][1], rotationMatrix[0][0]);\n rx = Math.atan2(rotationMatrix[1][2], rotationMatrix[2][2]);\n }\n\n return {\n scaleMatrix,\n rotationMatrix,\n translationMatrix,\n skewMatrix,\n rx: rx || 0,\n ry: ry || 0,\n rz: rz || 0,\n };\n}\n"],"mappings":"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C,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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"}
|
|
1
|
+
{"version":3,"names":["isAffineMatrixFlat","x","Array","isArray","length","every","element","isNaN","isAffineMatrix","row","flatten","matrix","flat","unflatten","m","maybeFlattenMatrix","multiplyMatrices","a","b","subtractMatrices","maybeFlatA","maybeFlatB","isFlatOnStart","c","map","_","i","addMatrices","scaleMatrix","scalar","getRotationMatrix","angle","axis","cos","Math","sin","norm3d","y","z","sqrt","transposeMatrix","assertVectorsHaveEqualLengths","__DEV__","Error","toString","innerProduct","reduce","acc","projection","u","s","e","subtractVectors","scaleVector","gramSchmidtAlgorithm","a0","a1","a2","a3","u0","u1","u2","u3","e0","e1","e2","e3","rotationMatrix","skewMatrix","decomposeMatrix","unknownTypeMatrix","forEach","translationMatrix","sx","sy","sz","rotationAndSkewMatrix","decomposeMatrixIntoMatricesAndAngles","sinRy","ry","asin","rx","rz","atan2"],"sources":["matrixUtils.tsx"],"sourcesContent":["'use strict';\ntype FixedLengthArray<\n T,\n L extends number,\n PassedObject = [T, ...Array<T>]\n> = PassedObject & {\n readonly length: L;\n [I: number]: T;\n};\n\nexport type AffineMatrix = FixedLengthArray<FixedLengthArray<number, 4>, 4>;\n\nexport type AffineMatrixFlat = FixedLengthArray<number, 16>;\n\ntype TransformMatrixDecomposition = Record<\n 'translationMatrix' | 'scaleMatrix' | 'rotationMatrix' | 'skewMatrix',\n AffineMatrix\n>;\n\ntype Axis = 'x' | 'y' | 'z';\n\ninterface TansformMatrixDecompositionWithAngles\n extends TransformMatrixDecomposition {\n rx: number;\n ry: number;\n rz: number;\n}\n\nexport function isAffineMatrixFlat(x: unknown): x is AffineMatrixFlat {\n 'worklet';\n return (\n Array.isArray(x) &&\n x.length === 16 &&\n x.every((element) => typeof element === 'number' && !isNaN(element))\n );\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function isAffineMatrix(x: unknown): x is AffineMatrix {\n 'worklet';\n return (\n Array.isArray(x) &&\n x.length === 4 &&\n x.every(\n (row) =>\n Array.isArray(row) &&\n row.length === 4 &&\n row.every((element) => typeof element === 'number' && !isNaN(element))\n )\n );\n}\n\nexport function flatten(matrix: AffineMatrix): AffineMatrixFlat {\n 'worklet';\n return matrix.flat() as AffineMatrixFlat;\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function unflatten(m: AffineMatrixFlat): AffineMatrix {\n 'worklet';\n return [\n [m[0], m[1], m[2], m[3]],\n [m[4], m[5], m[6], m[7]],\n [m[8], m[9], m[10], m[11]],\n [m[12], m[13], m[14], m[15]],\n ] as AffineMatrix;\n}\n\nfunction maybeFlattenMatrix(\n matrix: AffineMatrix | AffineMatrixFlat\n): AffineMatrixFlat {\n 'worklet';\n return isAffineMatrix(matrix) ? flatten(matrix) : matrix;\n}\n\nexport function multiplyMatrices(\n a: AffineMatrix,\n b: AffineMatrix\n): AffineMatrix {\n 'worklet';\n return [\n [\n a[0][0] * b[0][0] +\n a[0][1] * b[1][0] +\n a[0][2] * b[2][0] +\n a[0][3] * b[3][0],\n\n a[0][0] * b[0][1] +\n a[0][1] * b[1][1] +\n a[0][2] * b[2][1] +\n a[0][3] * b[3][1],\n\n a[0][0] * b[0][2] +\n a[0][1] * b[1][2] +\n a[0][2] * b[2][2] +\n a[0][3] * b[3][2],\n\n a[0][0] * b[0][3] +\n a[0][1] * b[1][3] +\n a[0][2] * b[2][3] +\n a[0][3] * b[3][3],\n ],\n [\n a[1][0] * b[0][0] +\n a[1][1] * b[1][0] +\n a[1][2] * b[2][0] +\n a[1][3] * b[3][0],\n\n a[1][0] * b[0][1] +\n a[1][1] * b[1][1] +\n a[1][2] * b[2][1] +\n a[1][3] * b[3][1],\n\n a[1][0] * b[0][2] +\n a[1][1] * b[1][2] +\n a[1][2] * b[2][2] +\n a[1][3] * b[3][2],\n\n a[1][0] * b[0][3] +\n a[1][1] * b[1][3] +\n a[1][2] * b[2][3] +\n a[1][3] * b[3][3],\n ],\n [\n a[2][0] * b[0][0] +\n a[2][1] * b[1][0] +\n a[2][2] * b[2][0] +\n a[2][3] * b[3][0],\n\n a[2][0] * b[0][1] +\n a[2][1] * b[1][1] +\n a[2][2] * b[2][1] +\n a[2][3] * b[3][1],\n\n a[2][0] * b[0][2] +\n a[2][1] * b[1][2] +\n a[2][2] * b[2][2] +\n a[2][3] * b[3][2],\n\n a[2][0] * b[0][3] +\n a[2][1] * b[1][3] +\n a[2][2] * b[2][3] +\n a[2][3] * b[3][3],\n ],\n [\n a[3][0] * b[0][0] +\n a[3][1] * b[1][0] +\n a[3][2] * b[2][0] +\n a[3][3] * b[3][0],\n\n a[3][0] * b[0][1] +\n a[3][1] * b[1][1] +\n a[3][2] * b[2][1] +\n a[3][3] * b[3][1],\n\n a[3][0] * b[0][2] +\n a[3][1] * b[1][2] +\n a[3][2] * b[2][2] +\n a[3][3] * b[3][2],\n\n a[3][0] * b[0][3] +\n a[3][1] * b[1][3] +\n a[3][2] * b[2][3] +\n a[3][3] * b[3][3],\n ],\n ];\n}\n\nexport function subtractMatrices<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n maybeFlatB: T\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a: AffineMatrixFlat = maybeFlattenMatrix(maybeFlatA);\n const b: AffineMatrixFlat = maybeFlattenMatrix(maybeFlatB);\n\n const c = a.map((_, i) => a[i] - b[i]) as AffineMatrixFlat;\n return isFlatOnStart ? (c as T) : (unflatten(c) as T);\n}\n\nexport function addMatrices<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n maybeFlatB: T\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a = maybeFlattenMatrix(maybeFlatA);\n const b = maybeFlattenMatrix(maybeFlatB);\n\n const c = a.map((_, i) => a[i] + b[i]) as AffineMatrixFlat;\n return isFlatOnStart ? (c as T) : (unflatten(c) as T);\n}\n\nexport function scaleMatrix<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n scalar: number\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a = maybeFlattenMatrix(maybeFlatA);\n\n const b = a.map((x) => x * scalar) as AffineMatrixFlat;\n return isFlatOnStart ? (b as T) : (unflatten(b) as T);\n}\n\nexport function getRotationMatrix(\n angle: number,\n axis: Axis = 'z'\n): AffineMatrix {\n 'worklet';\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n switch (axis) {\n case 'z':\n return [\n [cos, sin, 0, 0],\n [-sin, cos, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 1],\n ];\n case 'y':\n return [\n [cos, 0, -sin, 0],\n [0, 1, 0, 0],\n [sin, 0, cos, 0],\n [0, 0, 0, 1],\n ];\n case 'x':\n return [\n [1, 0, 0, 0],\n [0, cos, sin, 0],\n [0, -sin, cos, 0],\n [0, 0, 0, 1],\n ];\n }\n}\n\nfunction norm3d(x: number, y: number, z: number) {\n 'worklet';\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nfunction transposeMatrix(matrix: AffineMatrix): AffineMatrix {\n 'worklet';\n const m = flatten(matrix);\n return [\n [m[0], m[4], m[8], m[12]],\n [m[1], m[5], m[9], m[13]],\n [m[2], m[6], m[10], m[14]],\n [m[3], m[7], m[11], m[15]],\n ];\n}\n\nfunction assertVectorsHaveEqualLengths(a: number[], b: number[]) {\n 'worklet';\n if (__DEV__ && a.length !== b.length) {\n throw new Error(\n `[Reanimated] Cannot calculate inner product of two vectors of different lengths. Length of ${a.toString()} is ${\n a.length\n } and length of ${b.toString()} is ${b.length}.`\n );\n }\n}\n\nfunction innerProduct(a: number[], b: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(a, b);\n return a.reduce((acc, _, i) => acc + a[i] * b[i], 0);\n}\n\nfunction projection(u: number[], a: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(u, a);\n const s = innerProduct(u, a) / innerProduct(u, u);\n return u.map((e) => e * s);\n}\n\nfunction subtractVectors(a: number[], b: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(a, b);\n return a.map((_, i) => a[i] - b[i]);\n}\n\nfunction scaleVector(u: number[], a: number) {\n 'worklet';\n return u.map((e) => e * a);\n}\n\nfunction gramSchmidtAlgorithm(matrix: AffineMatrix): {\n rotationMatrix: AffineMatrix;\n skewMatrix: AffineMatrix;\n} {\n // Gram-Schmidt orthogonalization decomposes any matrix with non-zero determinant into an orthogonal and a triangular matrix\n // These matrices are equal to rotation and skew matrices respectively, because we apply it to transformation matrix\n // That is expected to already have extracted the remaining transforms (scale & translation)\n 'worklet';\n const [a0, a1, a2, a3] = matrix;\n\n const u0 = a0;\n const u1 = subtractVectors(a1, projection(u0, a1));\n const u2 = subtractVectors(\n subtractVectors(a2, projection(u0, a2)),\n projection(u1, a2)\n );\n const u3 = subtractVectors(\n subtractVectors(\n subtractVectors(a3, projection(u0, a3)),\n projection(u1, a3)\n ),\n projection(u2, a3)\n );\n\n const [e0, e1, e2, e3] = [u0, u1, u2, u3].map((u) =>\n scaleVector(u, 1 / Math.sqrt(innerProduct(u, u)))\n );\n\n const rotationMatrix: AffineMatrix = [\n [e0[0], e1[0], e2[0], e3[0]],\n [e0[1], e1[1], e2[1], e3[1]],\n [e0[2], e1[2], e2[2], e3[2]],\n [e0[3], e1[3], e2[3], e3[3]],\n ];\n\n const skewMatrix: AffineMatrix = [\n [\n innerProduct(e0, a0),\n innerProduct(e0, a1),\n innerProduct(e0, a2),\n innerProduct(e0, a3),\n ],\n [0, innerProduct(e1, a1), innerProduct(e1, a2), innerProduct(e1, a3)],\n [0, 0, innerProduct(e2, a2), innerProduct(e2, a3)],\n [0, 0, 0, innerProduct(e3, a3)],\n ];\n return {\n rotationMatrix: transposeMatrix(rotationMatrix),\n skewMatrix: transposeMatrix(skewMatrix),\n };\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function decomposeMatrix(\n unknownTypeMatrix: AffineMatrixFlat | AffineMatrix\n): TransformMatrixDecomposition {\n 'worklet';\n const matrix = maybeFlattenMatrix(unknownTypeMatrix);\n\n // normalize matrix\n if (matrix[15] === 0) {\n throw new Error('[Reanimated] Invalid transform matrix.');\n }\n matrix.forEach((_, i) => (matrix[i] /= matrix[15]));\n\n const translationMatrix: AffineMatrix = [\n [1, 0, 0, 0],\n [0, 1, 0, 0],\n [0, 0, 1, 0],\n [matrix[12], matrix[13], matrix[14], 1],\n ];\n const sx = matrix[15] * norm3d(matrix[0], matrix[4], matrix[8]);\n const sy = matrix[15] * norm3d(matrix[1], matrix[5], matrix[9]);\n const sz = matrix[15] * norm3d(matrix[2], matrix[6], matrix[10]);\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const scaleMatrix: AffineMatrix = [\n [sx, 0, 0, 0],\n [0, sy, 0, 0],\n [0, 0, sz, 0],\n [0, 0, 0, 1],\n ];\n\n const rotationAndSkewMatrix: AffineMatrix = [\n [matrix[0] / sx, matrix[1] / sx, matrix[2] / sx, 0],\n [matrix[4] / sy, matrix[5] / sy, matrix[6] / sy, 0],\n [matrix[8] / sz, matrix[9] / sz, matrix[10] / sz, 0],\n [0, 0, 0, 1],\n ];\n\n const { rotationMatrix, skewMatrix } = gramSchmidtAlgorithm(\n rotationAndSkewMatrix\n );\n\n return {\n translationMatrix,\n scaleMatrix,\n rotationMatrix,\n skewMatrix,\n };\n}\n\nexport function decomposeMatrixIntoMatricesAndAngles(\n matrix: AffineMatrixFlat | AffineMatrix\n): TansformMatrixDecompositionWithAngles {\n 'worklet';\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { scaleMatrix, rotationMatrix, translationMatrix, skewMatrix } =\n decomposeMatrix(matrix);\n\n const sinRy = -rotationMatrix[0][2];\n\n const ry = Math.asin(sinRy);\n let rx;\n let rz;\n if (sinRy === 1 || sinRy === -1) {\n rz = 0;\n rx = Math.atan2(sinRy * rotationMatrix[0][1], sinRy * rotationMatrix[0][2]);\n } else {\n rz = Math.atan2(rotationMatrix[0][1], rotationMatrix[0][0]);\n rx = Math.atan2(rotationMatrix[1][2], rotationMatrix[2][2]);\n }\n\n return {\n scaleMatrix,\n rotationMatrix,\n translationMatrix,\n skewMatrix,\n rx: rx || 0,\n ry: ry || 0,\n rz: rz || 0,\n };\n}\n"],"mappings":"AAAA,YAAY;;AA4BZ,OAAO,SAASA,kBAAkBA,CAACC,CAAU,EAAyB;EACpE,SAAS;;EACT,OACEC,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,IAChBA,CAAC,CAACG,MAAM,KAAK,EAAE,IACfH,CAAC,CAACI,KAAK,CAAEC,OAAO,IAAK,OAAOA,OAAO,KAAK,QAAQ,IAAI,CAACC,KAAK,CAACD,OAAO,CAAC,CAAC;AAExE;;AAEA;AACA,OAAO,SAASE,cAAcA,CAACP,CAAU,EAAqB;EAC5D,SAAS;;EACT,OACEC,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,IAChBA,CAAC,CAACG,MAAM,KAAK,CAAC,IACdH,CAAC,CAACI,KAAK,CACJI,GAAG,IACFP,KAAK,CAACC,OAAO,CAACM,GAAG,CAAC,IAClBA,GAAG,CAACL,MAAM,KAAK,CAAC,IAChBK,GAAG,CAACJ,KAAK,CAAEC,OAAO,IAAK,OAAOA,OAAO,KAAK,QAAQ,IAAI,CAACC,KAAK,CAACD,OAAO,CAAC,CACzE,CAAC;AAEL;AAEA,OAAO,SAASI,OAAOA,CAACC,MAAoB,EAAoB;EAC9D,SAAS;;EACT,OAAOA,MAAM,CAACC,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA,OAAO,SAASC,SAASA,CAACC,CAAmB,EAAgB;EAC3D,SAAS;;EACT,OAAO,CACL,CAACA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,CAACA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,CAACA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,CAACA,CAAC,CAAC,EAAE,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,CAAC,CAC7B;AACH;AAEA,SAASC,kBAAkBA,CACzBJ,MAAuC,EACrB;EAClB,SAAS;;EACT,OAAOH,cAAc,CAACG,MAAM,CAAC,GAAGD,OAAO,CAACC,MAAM,CAAC,GAAGA,MAAM;AAC1D;AAEA,OAAO,SAASK,gBAAgBA,CAC9BC,CAAe,EACfC,CAAe,EACD;EACd,SAAS;;EACT,OAAO,CACL,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isColor","convertToRGBA","rgbaArrayToRGBAColor","toGammaSpace","toLinearSpace","ReduceMotion","isWorkletFunction","flatten","multiplyMatrices","scaleMatrix","addMatrices","decomposeMatrixIntoMatricesAndAngles","isAffineMatrixFlat","subtractMatrices","getRotationMatrix","isReducedMotion","shouldBeUseWeb","IN_STYLE_UPDATER","IS_REDUCED_MOTION","SHOULD_BE_USE_WEB","__DEV__","console","warn","assertEasingIsWorklet","easing","_WORKLET","factory","Error","initialUpdaterRun","updater","result","recognizePrefixSuffix","value","match","prefix","suffix","number","strippedValue","parseFloat","getReduceMotionFromConfig","config","System","Always","getReduceMotionForAnimation","undefined","applyProgressToMatrix","progress","a","b","applyProgressToNumber","decorateAnimation","animation","baseOnStart","onStart","baseOnFrame","onFrame","isHigherOrder","timestamp","previousAnimation","reduceMotion","animationCopy","Object","assign","callback","prefNumberSuffOnStart","__prefix","__suffix","strippedCurrent","strippedToValue","toValue","current","startValue","paPrefix","paSuffix","paStrippedValue","prefNumberSuffOnFrame","res","tab","colorOnStart","RGBAValue","RGBACurrent","RGBAToValue","forEach","i","index","push","colorOnFrame","finished","transformationMatrixOnStart","startMatrices","stopMatrices","transformationMatrixOnFrame","transforms","mappedTransforms","key","_","currentTranslation","currentScale","skewMatrix","rotations","mappedRotations","angle","rotationMatrixX","rotationMatrixY","rotationMatrixZ","rotationMatrix","updated","arrayOnStart","v","arrayOnFrame","objectOnStart","objectOnFrame","newObject","startTime","Array","isArray","defineAnimation","starting","create","cancelAnimation","sharedValue"],"sources":["util.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\n'use strict';\nimport type { HigherOrderAnimation, StyleLayoutAnimation } from './commonTypes';\nimport type { ParsedColorArray } from '../Colors';\nimport {\n isColor,\n convertToRGBA,\n rgbaArrayToRGBAColor,\n toGammaSpace,\n toLinearSpace,\n} from '../Colors';\nimport { ReduceMotion, isWorkletFunction } from '../commonTypes';\nimport type {\n SharedValue,\n AnimatableValue,\n Animation,\n AnimationObject,\n Timestamp,\n AnimatableValueObject,\n} from '../commonTypes';\nimport type {\n AffineMatrixFlat,\n AffineMatrix,\n} from './transformationMatrix/matrixUtils';\nimport {\n flatten,\n multiplyMatrices,\n scaleMatrix,\n addMatrices,\n decomposeMatrixIntoMatricesAndAngles,\n isAffineMatrixFlat,\n subtractMatrices,\n getRotationMatrix,\n} from './transformationMatrix/matrixUtils';\nimport { isReducedMotion, shouldBeUseWeb } from '../PlatformChecker';\nimport type { EasingFunction, EasingFunctionFactory } from '../Easing';\n\nlet IN_STYLE_UPDATER = false;\nconst IS_REDUCED_MOTION = isReducedMotion();\nconst SHOULD_BE_USE_WEB = shouldBeUseWeb();\n\nif (__DEV__ && IS_REDUCED_MOTION) {\n console.warn(\n `[Reanimated] Reduced motion setting is enabled on this device. This warning is visible only in the development mode. Some animations will be disabled by default. You can override the behavior for individual animations, see https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#reduced-motion-setting-is-enabled-on-this-device.`\n );\n}\n\nexport function assertEasingIsWorklet(\n easing: EasingFunction | EasingFunctionFactory\n): void {\n 'worklet';\n if (_WORKLET) {\n // If this is called on UI (for example from gesture handler with worklets), we don't get easing,\n // but its bound copy, which is not a worklet. We don't want to throw any error then.\n return;\n }\n if (SHOULD_BE_USE_WEB) {\n // It is possible to run reanimated on web without plugin, so let's skip this check on web\n return;\n }\n // @ts-ignore typescript wants us to use `in` instead, which doesn't work with host objects\n if (easing?.factory) {\n return;\n }\n\n if (!isWorkletFunction(easing)) {\n throw new Error(\n '[Reanimated] The easing function is not a worklet. Please make sure you import `Easing` from react-native-reanimated.'\n );\n }\n}\n\nexport function initialUpdaterRun<T>(updater: () => T) {\n IN_STYLE_UPDATER = true;\n const result = updater();\n IN_STYLE_UPDATER = false;\n return result;\n}\n\ninterface RecognizedPrefixSuffix {\n prefix?: string;\n suffix?: string;\n strippedValue: number;\n}\n\nexport function recognizePrefixSuffix(\n value: string | number\n): RecognizedPrefixSuffix {\n 'worklet';\n if (typeof value === 'string') {\n const match = value.match(\n /([A-Za-z]*)(-?\\d*\\.?\\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/\n );\n if (!match) {\n throw new Error(\"[Reanimated] Couldn't parse animation value.\");\n }\n const prefix = match[1];\n const suffix = match[4];\n // number with scientific notation\n const number = match[2] + (match[3] ?? '');\n return { prefix, suffix, strippedValue: parseFloat(number) };\n } else {\n return { strippedValue: value };\n }\n}\n\n/**\n * Returns whether the motion should be reduced for a specified config.\n * By default returns the system setting.\n */\nexport function getReduceMotionFromConfig(config?: ReduceMotion) {\n 'worklet';\n return !config || config === ReduceMotion.System\n ? IS_REDUCED_MOTION\n : config === ReduceMotion.Always;\n}\n\n/**\n * Returns the value that should be assigned to `animation.reduceMotion`\n * for a given config. If the config is not defined, `undefined` is returned.\n */\nexport function getReduceMotionForAnimation(config?: ReduceMotion) {\n 'worklet';\n // if the config is not defined, we want `reduceMotion` to be undefined,\n // so the parent animation knows if it should overwrite it\n if (!config) {\n return undefined;\n }\n\n return getReduceMotionFromConfig(config);\n}\n\nfunction applyProgressToMatrix(\n progress: number,\n a: AffineMatrix,\n b: AffineMatrix\n) {\n 'worklet';\n return addMatrices(a, scaleMatrix(subtractMatrices(b, a), progress));\n}\n\nfunction applyProgressToNumber(progress: number, a: number, b: number) {\n 'worklet';\n return a + progress * (b - a);\n}\n\nfunction decorateAnimation<T extends AnimationObject | StyleLayoutAnimation>(\n animation: T\n): void {\n 'worklet';\n const baseOnStart = (animation as Animation<AnimationObject>).onStart;\n const baseOnFrame = (animation as Animation<AnimationObject>).onFrame;\n\n if ((animation as HigherOrderAnimation).isHigherOrder) {\n animation.onStart = (\n animation: Animation<AnimationObject>,\n value: number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ) => {\n if (animation.reduceMotion === undefined) {\n animation.reduceMotion = getReduceMotionFromConfig();\n }\n return baseOnStart(animation, value, timestamp, previousAnimation);\n };\n return;\n }\n\n const animationCopy = Object.assign({}, animation);\n delete animationCopy.callback;\n\n const prefNumberSuffOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: number,\n previousAnimation: Animation<AnimationObject>\n ) => {\n // recognize prefix, suffix, and updates stripped value on animation start\n const { prefix, suffix, strippedValue } = recognizePrefixSuffix(value);\n animation.__prefix = prefix;\n animation.__suffix = suffix;\n animation.strippedCurrent = strippedValue;\n const { strippedValue: strippedToValue } = recognizePrefixSuffix(\n animation.toValue as string | number\n );\n animation.current = strippedValue;\n animation.startValue = strippedValue;\n animation.toValue = strippedToValue;\n if (previousAnimation && previousAnimation !== animation) {\n const {\n prefix: paPrefix,\n suffix: paSuffix,\n strippedValue: paStrippedValue,\n } = recognizePrefixSuffix(previousAnimation.current as string | number);\n previousAnimation.current = paStrippedValue;\n previousAnimation.__prefix = paPrefix;\n previousAnimation.__suffix = paSuffix;\n }\n\n baseOnStart(animation, strippedValue, timestamp, previousAnimation);\n\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n\n if (previousAnimation && previousAnimation !== animation) {\n previousAnimation.current =\n (previousAnimation.__prefix ?? '') +\n // FIXME\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n previousAnimation.current +\n (previousAnimation.__suffix ?? '');\n }\n };\n const prefNumberSuffOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: number\n ) => {\n animation.current = animation.strippedCurrent;\n const res = baseOnFrame(animation, timestamp);\n animation.strippedCurrent = animation.current;\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n return res;\n };\n\n const tab = ['R', 'G', 'B', 'A'];\n const colorOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n let RGBAValue: ParsedColorArray;\n let RGBACurrent: ParsedColorArray;\n let RGBAToValue: ParsedColorArray;\n const res: Array<number> = [];\n if (isColor(value)) {\n RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n RGBAValue = toLinearSpace(convertToRGBA(value));\n if (animation.toValue) {\n RGBAToValue = toLinearSpace(convertToRGBA(animation.toValue));\n }\n }\n tab.forEach((i, index) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = RGBACurrent[index];\n animation[i].toValue = RGBAToValue ? RGBAToValue[index] : undefined;\n animation[i].onStart(\n animation[i],\n RGBAValue[index],\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n };\n\n const colorOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n const RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n const res: Array<number> = [];\n let finished = true;\n tab.forEach((i, index) => {\n animation[i].current = RGBACurrent[index];\n const result = animation[i].onFrame(animation[i], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n return finished;\n };\n\n const transformationMatrixOnStart = (\n animation: Animation<AnimationObject>,\n value: AffineMatrixFlat,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n const toValue = animation.toValue as AffineMatrixFlat;\n\n animation.startMatrices = decomposeMatrixIntoMatricesAndAngles(value);\n animation.stopMatrices = decomposeMatrixIntoMatricesAndAngles(toValue);\n\n // We create an animation copy to animate single value between 0 and 100\n // We set limits from 0 to 100 (instead of 0-1) to make spring look good\n // with default thresholds.\n\n animation[0] = Object.assign({}, animationCopy);\n animation[0].current = 0;\n animation[0].toValue = 100;\n animation[0].onStart(\n animation[0],\n 0,\n timestamp,\n previousAnimation ? previousAnimation[0] : undefined\n );\n\n animation.current = value;\n };\n\n const transformationMatrixOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n const result = animation[0].onFrame(animation[0], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n\n const progress = animation[0].current / 100;\n\n const transforms = ['translationMatrix', 'scaleMatrix', 'skewMatrix'];\n const mappedTransforms: Array<AffineMatrix> = [];\n\n transforms.forEach((key, _) =>\n mappedTransforms.push(\n applyProgressToMatrix(\n progress,\n animation.startMatrices[key],\n animation.stopMatrices[key]\n )\n )\n );\n\n const [currentTranslation, currentScale, skewMatrix] = mappedTransforms;\n\n const rotations: Array<'x' | 'y' | 'z'> = ['x', 'y', 'z'];\n const mappedRotations: Array<AffineMatrix> = [];\n\n rotations.forEach((key, _) => {\n const angle = applyProgressToNumber(\n progress,\n animation.startMatrices['r' + key],\n animation.stopMatrices['r' + key]\n );\n mappedRotations.push(getRotationMatrix(angle, key));\n });\n\n const [rotationMatrixX, rotationMatrixY, rotationMatrixZ] = mappedRotations;\n\n const rotationMatrix = multiplyMatrices(\n rotationMatrixX,\n multiplyMatrices(rotationMatrixY, rotationMatrixZ)\n );\n\n const updated = flatten(\n multiplyMatrices(\n multiplyMatrices(\n currentScale,\n multiplyMatrices(skewMatrix, rotationMatrix)\n ),\n currentTranslation\n )\n );\n\n animation.current = updated;\n\n return finished;\n };\n\n const arrayOnStart = (\n animation: Animation<AnimationObject>,\n value: Array<number>,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n value.forEach((v, i) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = v;\n animation[i].toValue = (animation.toValue as Array<number>)[i];\n animation[i].onStart(\n animation[i],\n v,\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n });\n\n animation.current = value;\n };\n\n const arrayOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n (animation.current as Array<number>).forEach((_, i) => {\n const result = animation[i].onFrame(animation[i], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n (animation.current as Array<number>)[i] = animation[i].current;\n });\n\n return finished;\n };\n\n const objectOnStart = (\n animation: Animation<AnimationObject>,\n value: AnimatableValueObject,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n for (const key in value) {\n animation[key] = Object.assign({}, animationCopy);\n animation[key].onStart = animation.onStart;\n\n animation[key].current = value[key];\n animation[key].toValue = (animation.toValue as AnimatableValueObject)[\n key\n ];\n animation[key].onStart(\n animation[key],\n value[key],\n timestamp,\n previousAnimation ? previousAnimation[key] : undefined\n );\n }\n animation.current = value;\n };\n\n const objectOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n const newObject: AnimatableValueObject = {};\n for (const key in animation.current as AnimatableValueObject) {\n const result = animation[key].onFrame(animation[key], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n newObject[key] = animation[key].current;\n }\n animation.current = newObject;\n return finished;\n };\n\n animation.onStart = (\n animation: Animation<AnimationObject>,\n value: number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ) => {\n if (animation.reduceMotion === undefined) {\n animation.reduceMotion = getReduceMotionFromConfig();\n }\n if (animation.reduceMotion) {\n if (animation.toValue !== undefined) {\n animation.current = animation.toValue;\n } else {\n // if there is no `toValue`, then the base function is responsible for setting the current value\n baseOnStart(animation, value, timestamp, previousAnimation);\n }\n animation.startTime = 0;\n animation.onFrame = () => true;\n return;\n }\n if (isColor(value)) {\n colorOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = colorOnFrame;\n return;\n } else if (isAffineMatrixFlat(value)) {\n transformationMatrixOnStart(\n animation,\n value,\n timestamp,\n previousAnimation\n );\n animation.onFrame = transformationMatrixOnFrame;\n return;\n } else if (Array.isArray(value)) {\n arrayOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = arrayOnFrame;\n return;\n } else if (typeof value === 'string') {\n prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = prefNumberSuffOnFrame;\n return;\n } else if (typeof value === 'object' && value !== null) {\n objectOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = objectOnFrame;\n return;\n }\n baseOnStart(animation, value, timestamp, previousAnimation);\n };\n}\n\ntype AnimationToDecoration<\n T extends AnimationObject | StyleLayoutAnimation,\n U extends AnimationObject | StyleLayoutAnimation\n> = T extends StyleLayoutAnimation\n ? Record<string, unknown>\n : U | (() => U) | AnimatableValue;\n\nexport function defineAnimation<\n T extends AnimationObject | StyleLayoutAnimation, // type that's supposed to be returned\n U extends AnimationObject | StyleLayoutAnimation = T // type that's received\n>(starting: AnimationToDecoration<T, U>, factory: () => T): T {\n 'worklet';\n if (IN_STYLE_UPDATER) {\n return starting as unknown as T;\n }\n const create = () => {\n 'worklet';\n const animation = factory();\n decorateAnimation<U>(animation as unknown as U);\n return animation;\n };\n\n if (_WORKLET || SHOULD_BE_USE_WEB) {\n return create();\n }\n // @ts-ignore: eslint-disable-line\n return create;\n}\n\n/**\n * Lets you cancel a running animation paired to a shared value.\n *\n * @param sharedValue - The shared value of a running animation that you want to cancel.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/core/cancelAnimation\n */\nexport function cancelAnimation<T>(sharedValue: SharedValue<T>): void {\n 'worklet';\n // setting the current value cancels the animation if one is currently running\n sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["isColor","convertToRGBA","rgbaArrayToRGBAColor","toGammaSpace","toLinearSpace","ReduceMotion","isWorkletFunction","flatten","multiplyMatrices","scaleMatrix","addMatrices","decomposeMatrixIntoMatricesAndAngles","isAffineMatrixFlat","subtractMatrices","getRotationMatrix","isReducedMotion","shouldBeUseWeb","IN_STYLE_UPDATER","IS_REDUCED_MOTION","SHOULD_BE_USE_WEB","__DEV__","console","warn","assertEasingIsWorklet","easing","_WORKLET","factory","Error","initialUpdaterRun","updater","result","recognizePrefixSuffix","value","match","prefix","suffix","number","strippedValue","parseFloat","getReduceMotionFromConfig","config","System","Always","getReduceMotionForAnimation","undefined","applyProgressToMatrix","progress","a","b","applyProgressToNumber","decorateAnimation","animation","baseOnStart","onStart","baseOnFrame","onFrame","isHigherOrder","timestamp","previousAnimation","reduceMotion","animationCopy","Object","assign","callback","prefNumberSuffOnStart","__prefix","__suffix","strippedCurrent","strippedToValue","toValue","current","startValue","paPrefix","paSuffix","paStrippedValue","prefNumberSuffOnFrame","res","tab","colorOnStart","RGBAValue","RGBACurrent","RGBAToValue","forEach","i","index","push","colorOnFrame","finished","transformationMatrixOnStart","startMatrices","stopMatrices","transformationMatrixOnFrame","transforms","mappedTransforms","key","_","currentTranslation","currentScale","skewMatrix","rotations","mappedRotations","angle","rotationMatrixX","rotationMatrixY","rotationMatrixZ","rotationMatrix","updated","arrayOnStart","v","arrayOnFrame","objectOnStart","objectOnFrame","newObject","startTime","Array","isArray","defineAnimation","starting","create","cancelAnimation","sharedValue"],"sources":["util.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\n'use strict';\nimport type { HigherOrderAnimation, StyleLayoutAnimation } from './commonTypes';\nimport type { ParsedColorArray } from '../Colors';\nimport {\n isColor,\n convertToRGBA,\n rgbaArrayToRGBAColor,\n toGammaSpace,\n toLinearSpace,\n} from '../Colors';\nimport { ReduceMotion, isWorkletFunction } from '../commonTypes';\nimport type {\n SharedValue,\n AnimatableValue,\n Animation,\n AnimationObject,\n Timestamp,\n AnimatableValueObject,\n} from '../commonTypes';\nimport type {\n AffineMatrixFlat,\n AffineMatrix,\n} from './transformationMatrix/matrixUtils';\nimport {\n flatten,\n multiplyMatrices,\n scaleMatrix,\n addMatrices,\n decomposeMatrixIntoMatricesAndAngles,\n isAffineMatrixFlat,\n subtractMatrices,\n getRotationMatrix,\n} from './transformationMatrix/matrixUtils';\nimport { isReducedMotion, shouldBeUseWeb } from '../PlatformChecker';\nimport type { EasingFunction, EasingFunctionFactory } from '../Easing';\n\nlet IN_STYLE_UPDATER = false;\nconst IS_REDUCED_MOTION = isReducedMotion();\nconst SHOULD_BE_USE_WEB = shouldBeUseWeb();\n\nif (__DEV__ && IS_REDUCED_MOTION) {\n console.warn(\n `[Reanimated] Reduced motion setting is enabled on this device. This warning is visible only in the development mode. Some animations will be disabled by default. You can override the behavior for individual animations, see https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#reduced-motion-setting-is-enabled-on-this-device.`\n );\n}\n\nexport function assertEasingIsWorklet(\n easing: EasingFunction | EasingFunctionFactory\n): void {\n 'worklet';\n if (_WORKLET) {\n // If this is called on UI (for example from gesture handler with worklets), we don't get easing,\n // but its bound copy, which is not a worklet. We don't want to throw any error then.\n return;\n }\n if (SHOULD_BE_USE_WEB) {\n // It is possible to run reanimated on web without plugin, so let's skip this check on web\n return;\n }\n // @ts-ignore typescript wants us to use `in` instead, which doesn't work with host objects\n if (easing?.factory) {\n return;\n }\n\n if (!isWorkletFunction(easing)) {\n throw new Error(\n '[Reanimated] The easing function is not a worklet. Please make sure you import `Easing` from react-native-reanimated.'\n );\n }\n}\n\nexport function initialUpdaterRun<T>(updater: () => T) {\n IN_STYLE_UPDATER = true;\n const result = updater();\n IN_STYLE_UPDATER = false;\n return result;\n}\n\ninterface RecognizedPrefixSuffix {\n prefix?: string;\n suffix?: string;\n strippedValue: number;\n}\n\nexport function recognizePrefixSuffix(\n value: string | number\n): RecognizedPrefixSuffix {\n 'worklet';\n if (typeof value === 'string') {\n const match = value.match(\n /([A-Za-z]*)(-?\\d*\\.?\\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/\n );\n if (!match) {\n throw new Error(\"[Reanimated] Couldn't parse animation value.\");\n }\n const prefix = match[1];\n const suffix = match[4];\n // number with scientific notation\n const number = match[2] + (match[3] ?? '');\n return { prefix, suffix, strippedValue: parseFloat(number) };\n } else {\n return { strippedValue: value };\n }\n}\n\n/**\n * Returns whether the motion should be reduced for a specified config.\n * By default returns the system setting.\n */\nexport function getReduceMotionFromConfig(config?: ReduceMotion) {\n 'worklet';\n return !config || config === ReduceMotion.System\n ? IS_REDUCED_MOTION\n : config === ReduceMotion.Always;\n}\n\n/**\n * Returns the value that should be assigned to `animation.reduceMotion`\n * for a given config. If the config is not defined, `undefined` is returned.\n */\nexport function getReduceMotionForAnimation(config?: ReduceMotion) {\n 'worklet';\n // if the config is not defined, we want `reduceMotion` to be undefined,\n // so the parent animation knows if it should overwrite it\n if (!config) {\n return undefined;\n }\n\n return getReduceMotionFromConfig(config);\n}\n\nfunction applyProgressToMatrix(\n progress: number,\n a: AffineMatrix,\n b: AffineMatrix\n) {\n 'worklet';\n return addMatrices(a, scaleMatrix(subtractMatrices(b, a), progress));\n}\n\nfunction applyProgressToNumber(progress: number, a: number, b: number) {\n 'worklet';\n return a + progress * (b - a);\n}\n\nfunction decorateAnimation<T extends AnimationObject | StyleLayoutAnimation>(\n animation: T\n): void {\n 'worklet';\n const baseOnStart = (animation as Animation<AnimationObject>).onStart;\n const baseOnFrame = (animation as Animation<AnimationObject>).onFrame;\n\n if ((animation as HigherOrderAnimation).isHigherOrder) {\n animation.onStart = (\n animation: Animation<AnimationObject>,\n value: number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ) => {\n if (animation.reduceMotion === undefined) {\n animation.reduceMotion = getReduceMotionFromConfig();\n }\n return baseOnStart(animation, value, timestamp, previousAnimation);\n };\n return;\n }\n\n const animationCopy = Object.assign({}, animation);\n delete animationCopy.callback;\n\n const prefNumberSuffOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: number,\n previousAnimation: Animation<AnimationObject>\n ) => {\n // recognize prefix, suffix, and updates stripped value on animation start\n const { prefix, suffix, strippedValue } = recognizePrefixSuffix(value);\n animation.__prefix = prefix;\n animation.__suffix = suffix;\n animation.strippedCurrent = strippedValue;\n const { strippedValue: strippedToValue } = recognizePrefixSuffix(\n animation.toValue as string | number\n );\n animation.current = strippedValue;\n animation.startValue = strippedValue;\n animation.toValue = strippedToValue;\n if (previousAnimation && previousAnimation !== animation) {\n const {\n prefix: paPrefix,\n suffix: paSuffix,\n strippedValue: paStrippedValue,\n } = recognizePrefixSuffix(previousAnimation.current as string | number);\n previousAnimation.current = paStrippedValue;\n previousAnimation.__prefix = paPrefix;\n previousAnimation.__suffix = paSuffix;\n }\n\n baseOnStart(animation, strippedValue, timestamp, previousAnimation);\n\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n\n if (previousAnimation && previousAnimation !== animation) {\n previousAnimation.current =\n (previousAnimation.__prefix ?? '') +\n // FIXME\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n previousAnimation.current +\n (previousAnimation.__suffix ?? '');\n }\n };\n const prefNumberSuffOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: number\n ) => {\n animation.current = animation.strippedCurrent;\n const res = baseOnFrame(animation, timestamp);\n animation.strippedCurrent = animation.current;\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n return res;\n };\n\n const tab = ['R', 'G', 'B', 'A'];\n const colorOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n let RGBAValue: ParsedColorArray;\n let RGBACurrent: ParsedColorArray;\n let RGBAToValue: ParsedColorArray;\n const res: Array<number> = [];\n if (isColor(value)) {\n RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n RGBAValue = toLinearSpace(convertToRGBA(value));\n if (animation.toValue) {\n RGBAToValue = toLinearSpace(convertToRGBA(animation.toValue));\n }\n }\n tab.forEach((i, index) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = RGBACurrent[index];\n animation[i].toValue = RGBAToValue ? RGBAToValue[index] : undefined;\n animation[i].onStart(\n animation[i],\n RGBAValue[index],\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n };\n\n const colorOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n const RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n const res: Array<number> = [];\n let finished = true;\n tab.forEach((i, index) => {\n animation[i].current = RGBACurrent[index];\n const result = animation[i].onFrame(animation[i], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n return finished;\n };\n\n const transformationMatrixOnStart = (\n animation: Animation<AnimationObject>,\n value: AffineMatrixFlat,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n const toValue = animation.toValue as AffineMatrixFlat;\n\n animation.startMatrices = decomposeMatrixIntoMatricesAndAngles(value);\n animation.stopMatrices = decomposeMatrixIntoMatricesAndAngles(toValue);\n\n // We create an animation copy to animate single value between 0 and 100\n // We set limits from 0 to 100 (instead of 0-1) to make spring look good\n // with default thresholds.\n\n animation[0] = Object.assign({}, animationCopy);\n animation[0].current = 0;\n animation[0].toValue = 100;\n animation[0].onStart(\n animation[0],\n 0,\n timestamp,\n previousAnimation ? previousAnimation[0] : undefined\n );\n\n animation.current = value;\n };\n\n const transformationMatrixOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n const result = animation[0].onFrame(animation[0], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n\n const progress = animation[0].current / 100;\n\n const transforms = ['translationMatrix', 'scaleMatrix', 'skewMatrix'];\n const mappedTransforms: Array<AffineMatrix> = [];\n\n transforms.forEach((key, _) =>\n mappedTransforms.push(\n applyProgressToMatrix(\n progress,\n animation.startMatrices[key],\n animation.stopMatrices[key]\n )\n )\n );\n\n const [currentTranslation, currentScale, skewMatrix] = mappedTransforms;\n\n const rotations: Array<'x' | 'y' | 'z'> = ['x', 'y', 'z'];\n const mappedRotations: Array<AffineMatrix> = [];\n\n rotations.forEach((key, _) => {\n const angle = applyProgressToNumber(\n progress,\n animation.startMatrices['r' + key],\n animation.stopMatrices['r' + key]\n );\n mappedRotations.push(getRotationMatrix(angle, key));\n });\n\n const [rotationMatrixX, rotationMatrixY, rotationMatrixZ] = mappedRotations;\n\n const rotationMatrix = multiplyMatrices(\n rotationMatrixX,\n multiplyMatrices(rotationMatrixY, rotationMatrixZ)\n );\n\n const updated = flatten(\n multiplyMatrices(\n multiplyMatrices(\n currentScale,\n multiplyMatrices(skewMatrix, rotationMatrix)\n ),\n currentTranslation\n )\n );\n\n animation.current = updated;\n\n return finished;\n };\n\n const arrayOnStart = (\n animation: Animation<AnimationObject>,\n value: Array<number>,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n value.forEach((v, i) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = v;\n animation[i].toValue = (animation.toValue as Array<number>)[i];\n animation[i].onStart(\n animation[i],\n v,\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n });\n\n animation.current = value;\n };\n\n const arrayOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n (animation.current as Array<number>).forEach((_, i) => {\n const result = animation[i].onFrame(animation[i], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n (animation.current as Array<number>)[i] = animation[i].current;\n });\n\n return finished;\n };\n\n const objectOnStart = (\n animation: Animation<AnimationObject>,\n value: AnimatableValueObject,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n for (const key in value) {\n animation[key] = Object.assign({}, animationCopy);\n animation[key].onStart = animation.onStart;\n\n animation[key].current = value[key];\n animation[key].toValue = (animation.toValue as AnimatableValueObject)[\n key\n ];\n animation[key].onStart(\n animation[key],\n value[key],\n timestamp,\n previousAnimation ? previousAnimation[key] : undefined\n );\n }\n animation.current = value;\n };\n\n const objectOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n const newObject: AnimatableValueObject = {};\n for (const key in animation.current as AnimatableValueObject) {\n const result = animation[key].onFrame(animation[key], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n newObject[key] = animation[key].current;\n }\n animation.current = newObject;\n return finished;\n };\n\n animation.onStart = (\n animation: Animation<AnimationObject>,\n value: number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ) => {\n if (animation.reduceMotion === undefined) {\n animation.reduceMotion = getReduceMotionFromConfig();\n }\n if (animation.reduceMotion) {\n if (animation.toValue !== undefined) {\n animation.current = animation.toValue;\n } else {\n // if there is no `toValue`, then the base function is responsible for setting the current value\n baseOnStart(animation, value, timestamp, previousAnimation);\n }\n animation.startTime = 0;\n animation.onFrame = () => true;\n return;\n }\n if (isColor(value)) {\n colorOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = colorOnFrame;\n return;\n } else if (isAffineMatrixFlat(value)) {\n transformationMatrixOnStart(\n animation,\n value,\n timestamp,\n previousAnimation\n );\n animation.onFrame = transformationMatrixOnFrame;\n return;\n } else if (Array.isArray(value)) {\n arrayOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = arrayOnFrame;\n return;\n } else if (typeof value === 'string') {\n prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = prefNumberSuffOnFrame;\n return;\n } else if (typeof value === 'object' && value !== null) {\n objectOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = objectOnFrame;\n return;\n }\n baseOnStart(animation, value, timestamp, previousAnimation);\n };\n}\n\ntype AnimationToDecoration<\n T extends AnimationObject | StyleLayoutAnimation,\n U extends AnimationObject | StyleLayoutAnimation\n> = T extends StyleLayoutAnimation\n ? Record<string, unknown>\n : U | (() => U) | AnimatableValue;\n\nexport function defineAnimation<\n T extends AnimationObject | StyleLayoutAnimation, // type that's supposed to be returned\n U extends AnimationObject | StyleLayoutAnimation = T // type that's received\n>(starting: AnimationToDecoration<T, U>, factory: () => T): T {\n 'worklet';\n if (IN_STYLE_UPDATER) {\n return starting as unknown as T;\n }\n const create = () => {\n 'worklet';\n const animation = factory();\n decorateAnimation<U>(animation as unknown as U);\n return animation;\n };\n\n if (_WORKLET || SHOULD_BE_USE_WEB) {\n return create();\n }\n // @ts-ignore: eslint-disable-line\n return create;\n}\n\n/**\n * Lets you cancel a running animation paired to a shared value.\n *\n * @param sharedValue - The shared value of a running animation that you want to cancel.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/core/cancelAnimation\n */\nexport function cancelAnimation<T>(sharedValue: SharedValue<T>): void {\n 'worklet';\n // setting the current value cancels the animation if one is currently running\n sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
// check other methods that may use them. However, this field is not actually defined
|
|
14
14
|
// nor should be used for anything else as assigning any data to those objects will
|
|
15
15
|
// throw an error.
|
|
16
|
+
|
|
16
17
|
// In case of objects with depth or arrays of objects or arrays of arrays etc.
|
|
17
18
|
// we add this utility type that makes it a SharaebleRef of the outermost type.
|
|
19
|
+
|
|
18
20
|
/**
|
|
19
21
|
* This function allows you to determine if a given function is a worklet. It only works
|
|
20
22
|
* with Reanimated Babel plugin enabled. Unless you are doing something with internals of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isWorkletFunction","value","__workletHash","SensorType","IOSReferenceFrame","InterfaceOrientation","KeyboardState","ReduceMotion"],"sources":["commonTypes.ts"],"sourcesContent":["'use strict';\nimport type { ViewStyle, TextStyle } from 'react-native';\n\nexport type RequiredKeys<T, K extends keyof T> = T & Required<Pick<T, K>>;\nexport interface StyleProps extends ViewStyle, TextStyle {\n originX?: number;\n originY?: number;\n [key: string]: any;\n}\n\n/**\n * A value that can be used both on the [JavaScript thread](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/glossary#javascript-thread) and the [UI thread](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/glossary#ui-thread).\n *\n * Shared values are defined using [useSharedValue](https://docs.swmansion.com/react-native-reanimated/docs/core/useSharedValue) hook. You access and modify shared values by their `.value` property.\n */\nexport interface SharedValue<Value = unknown> {\n value: Value;\n addListener: (listenerID: number, listener: (value: Value) => void) => void;\n removeListener: (listenerID: number) => void;\n modify: (\n modifier?: <T extends Value>(value: T) => T,\n forceUpdate?: boolean\n ) => void;\n}\n\nexport interface Mutable<Value = unknown> extends SharedValue<Value> {\n _isReanimatedSharedValue: true;\n _animation?: AnimationObject<Value> | null; // only in Native\n _value: Value;\n}\n\n// The below type is used for HostObjects returned by the JSI API that don't have\n// any accessible fields or methods but can carry data that is accessed from the\n// c++ side. We add a field to the type to make it possible for typescript to recognize\n// which JSI methods accept those types as arguments and to be able to correctly type\n// check other methods that may use them. However, this field is not actually defined\n// nor should be used for anything else as assigning any data to those objects will\n// throw an error.\nexport type ShareableRef<T = unknown> = {\n __hostObjectShareableJSRef: T;\n};\n\n// In case of objects with depth or arrays of objects or arrays of arrays etc.\n// we add this utility type that makes it a SharaebleRef of the outermost type.\nexport type FlatShareableRef<T> = T extends ShareableRef<infer U>\n ? ShareableRef<U>\n : ShareableRef<T>;\n\nexport type MapperRawInputs = unknown[];\n\nexport type MapperOutputs = SharedValue[];\n\nexport type MapperRegistry = {\n start: (\n mapperID: number,\n worklet: () => void,\n inputs: MapperRawInputs,\n outputs?: MapperOutputs\n ) => void;\n stop: (mapperID: number) => void;\n};\n\nexport type WorkletStackDetails = [\n error: Error,\n lineOffset: number,\n columnOffset: number\n];\n\ntype WorkletClosure = Record<string, unknown>;\n\ninterface WorkletInitDataCommon {\n code: string;\n}\n\ntype WorkletInitDataRelease = WorkletInitDataCommon;\n\ninterface WorkletInitDataDev extends WorkletInitDataCommon {\n location: string;\n sourceMap: string;\n version: string;\n}\n\ninterface WorkletBaseCommon {\n __closure: WorkletClosure;\n __workletHash: number;\n}\n\ninterface WorkletBaseRelease extends WorkletBaseCommon {\n __initData: WorkletInitDataRelease;\n}\n\ninterface WorkletBaseDev extends WorkletBaseCommon {\n __initData: WorkletInitDataDev;\n /**\n * `__stackDetails` is removed after parsing.\n */\n __stackDetails?: WorkletStackDetails;\n}\n\nexport type WorkletFunction<\n Args extends unknown[] = unknown[],\n ReturnValue = unknown\n> = ((...args: Args) => ReturnValue) & (WorkletBaseRelease | WorkletBaseDev);\n\n/**\n * This function allows you to determine if a given function is a worklet. It only works\n * with Reanimated Babel plugin enabled. Unless you are doing something with internals of\n * Reanimated you shouldn't need to use this function.\n *\n * ### Note\n * Do not call it before the worklet is declared, as it will always return false then. E.g.:\n *\n * ```ts\n * isWorkletFunction(myWorklet); // Will always return false.\n *\n * function myWorklet() {\n * 'worklet';\n * };\n * ```\n *\n * ### Maintainer note\n * This function works well on the JS thread performance-wise, since the JIT can inline it.\n * However, on other threads it will not get optimized and we will get a function call overhead.\n * We want to change it in the future, but it's not feasible at the moment.\n */\nexport function isWorkletFunction<\n Args extends unknown[] = unknown[],\n ReturnValue = unknown,\n BuildType extends WorkletBaseDev | WorkletBaseRelease = WorkletBaseDev\n>(value: unknown): value is WorkletFunction<Args, ReturnValue> & BuildType {\n 'worklet';\n // Since host objects always return true for `in` operator, we have to use dot notation to check if the property exists.\n // See https://github.com/facebook/hermes/blob/340726ef8cf666a7cce75bc60b02fa56b3e54560/lib/VM/JSObject.cpp#L1276.\n return (\n typeof value === 'function' &&\n !!(value as unknown as Record<string, unknown>).__workletHash\n );\n}\n\nexport type AnimatedPropsAdapterFunction = (\n props: Record<string, unknown>\n) => void;\n\nexport type AnimatedPropsAdapterWorklet = WorkletFunction<\n [props: Record<string, unknown>],\n void\n>;\n\nexport interface NestedObject<T> {\n [key: string]: NestedObjectValues<T>;\n}\n\nexport type NestedObjectValues<T> =\n | T\n | Array<NestedObjectValues<T>>\n | NestedObject<T>;\n\ntype Animatable = number | string | Array<number>;\n\nexport type AnimatableValueObject = { [key: string]: Animatable };\n\nexport type AnimatableValue = Animatable | AnimatableValueObject;\n\nexport interface AnimationObject<T = AnimatableValue> {\n [key: string]: any;\n callback?: AnimationCallback;\n current?: T;\n toValue?: AnimationObject<T>['current'];\n startValue?: AnimationObject<T>['current'];\n finished?: boolean;\n strippedCurrent?: number;\n cancelled?: boolean;\n reduceMotion?: boolean;\n\n __prefix?: string;\n __suffix?: string;\n onFrame: (animation: any, timestamp: Timestamp) => boolean;\n onStart: (\n nextAnimation: any,\n current: any,\n timestamp: Timestamp,\n previousAnimation: any\n ) => void;\n}\n\nexport interface Animation<T extends AnimationObject> extends AnimationObject {\n onFrame: (animation: T, timestamp: Timestamp) => boolean;\n onStart: (\n nextAnimation: T,\n current: AnimatableValue,\n timestamp: Timestamp,\n previousAnimation: Animation<any> | null | T\n ) => void;\n}\n\nexport enum SensorType {\n ACCELEROMETER = 1,\n GYROSCOPE = 2,\n GRAVITY = 3,\n MAGNETIC_FIELD = 4,\n ROTATION = 5,\n}\nexport enum IOSReferenceFrame {\n XArbitraryZVertical,\n XArbitraryCorrectedZVertical,\n XMagneticNorthZVertical,\n XTrueNorthZVertical,\n Auto,\n}\n\nexport type SensorConfig = {\n interval: number | 'auto';\n adjustToInterfaceOrientation: boolean;\n iosReferenceFrame: IOSReferenceFrame;\n};\n\nexport type AnimatedSensor<T extends Value3D | ValueRotation> = {\n sensor: SharedValue<T>;\n unregister: () => void;\n isAvailable: boolean;\n config: SensorConfig;\n};\n\n/**\n * A function called upon animation completion. If the animation is cancelled, the callback will receive `false` as the argument; otherwise, it will receive `true`.\n */\nexport type AnimationCallback = (\n finished?: boolean,\n current?: AnimatableValue\n) => void;\n\nexport type Timestamp = number;\n\nexport type Value3D = {\n x: number;\n y: number;\n z: number;\n interfaceOrientation: InterfaceOrientation;\n};\n\nexport type ValueRotation = {\n qw: number;\n qx: number;\n qy: number;\n qz: number;\n yaw: number;\n pitch: number;\n roll: number;\n interfaceOrientation: InterfaceOrientation;\n};\n\nexport enum InterfaceOrientation {\n ROTATION_0 = 0,\n ROTATION_90 = 90,\n ROTATION_180 = 180,\n ROTATION_270 = 270,\n}\n\nexport type ShadowNodeWrapper = {\n __hostObjectShadowNodeWrapper: never;\n};\n\nexport enum KeyboardState {\n UNKNOWN = 0,\n OPENING = 1,\n OPEN = 2,\n CLOSING = 3,\n CLOSED = 4,\n}\n\nexport type AnimatedKeyboardInfo = {\n height: SharedValue<number>;\n state: SharedValue<KeyboardState>;\n};\n\n/**\n * @param x - A number representing X coordinate relative to the parent component.\n * @param y - A number representing Y coordinate relative to the parent component.\n * @param width - A number representing the width of the component.\n * @param height - A number representing the height of the component.\n * @param pageX - A number representing X coordinate relative to the screen.\n * @param pageY - A number representing Y coordinate relative to the screen.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/advanced/measure#returns\n */\nexport interface MeasuredDimensions {\n x: number;\n y: number;\n width: number;\n height: number;\n pageX: number;\n pageY: number;\n}\n\nexport interface AnimatedKeyboardOptions {\n isStatusBarTranslucentAndroid?: boolean;\n}\n\n/**\n * @param System - If the `Reduce motion` accessibility setting is enabled on the device, disable the animation. Otherwise, enable the animation.\n * @param Always - Disable the animation.\n * @param Never - Enable the animation.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/guides/accessibility\n */\nexport enum ReduceMotion {\n System = 'system',\n Always = 'always',\n Never = 'never',\n}\n"],"mappings":"AAAA,YAAY;;AAUZ;AACA;AACA;AACA;AACA;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AA6DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAI/BC,KAAc,EAA2D;EACzE,SAAS;;EACT;EACA;EACA,OACE,OAAOA,KAAK,KAAK,UAAU,IAC3B,CAAC,CAAEA,KAAK,CAAwCC,aAAa;AAEjE;AA0DA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAOtB,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;;AAqB7B;AACA;AACA;;AA0BA,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAWhC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;;AAazB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA"}
|
|
1
|
+
{"version":3,"names":["isWorkletFunction","value","__workletHash","SensorType","IOSReferenceFrame","InterfaceOrientation","KeyboardState","ReduceMotion"],"sources":["commonTypes.ts"],"sourcesContent":["'use strict';\nimport type { ViewStyle, TextStyle } from 'react-native';\n\nexport type RequiredKeys<T, K extends keyof T> = T & Required<Pick<T, K>>;\nexport interface StyleProps extends ViewStyle, TextStyle {\n originX?: number;\n originY?: number;\n [key: string]: any;\n}\n\n/**\n * A value that can be used both on the [JavaScript thread](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/glossary#javascript-thread) and the [UI thread](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/glossary#ui-thread).\n *\n * Shared values are defined using [useSharedValue](https://docs.swmansion.com/react-native-reanimated/docs/core/useSharedValue) hook. You access and modify shared values by their `.value` property.\n */\nexport interface SharedValue<Value = unknown> {\n value: Value;\n addListener: (listenerID: number, listener: (value: Value) => void) => void;\n removeListener: (listenerID: number) => void;\n modify: (\n modifier?: <T extends Value>(value: T) => T,\n forceUpdate?: boolean\n ) => void;\n}\n\nexport interface Mutable<Value = unknown> extends SharedValue<Value> {\n _isReanimatedSharedValue: true;\n _animation?: AnimationObject<Value> | null; // only in Native\n _value: Value;\n}\n\n// The below type is used for HostObjects returned by the JSI API that don't have\n// any accessible fields or methods but can carry data that is accessed from the\n// c++ side. We add a field to the type to make it possible for typescript to recognize\n// which JSI methods accept those types as arguments and to be able to correctly type\n// check other methods that may use them. However, this field is not actually defined\n// nor should be used for anything else as assigning any data to those objects will\n// throw an error.\nexport type ShareableRef<T = unknown> = {\n __hostObjectShareableJSRef: T;\n};\n\n// In case of objects with depth or arrays of objects or arrays of arrays etc.\n// we add this utility type that makes it a SharaebleRef of the outermost type.\nexport type FlatShareableRef<T> = T extends ShareableRef<infer U>\n ? ShareableRef<U>\n : ShareableRef<T>;\n\nexport type MapperRawInputs = unknown[];\n\nexport type MapperOutputs = SharedValue[];\n\nexport type MapperRegistry = {\n start: (\n mapperID: number,\n worklet: () => void,\n inputs: MapperRawInputs,\n outputs?: MapperOutputs\n ) => void;\n stop: (mapperID: number) => void;\n};\n\nexport type WorkletStackDetails = [\n error: Error,\n lineOffset: number,\n columnOffset: number\n];\n\ntype WorkletClosure = Record<string, unknown>;\n\ninterface WorkletInitDataCommon {\n code: string;\n}\n\ntype WorkletInitDataRelease = WorkletInitDataCommon;\n\ninterface WorkletInitDataDev extends WorkletInitDataCommon {\n location: string;\n sourceMap: string;\n version: string;\n}\n\ninterface WorkletBaseCommon {\n __closure: WorkletClosure;\n __workletHash: number;\n}\n\ninterface WorkletBaseRelease extends WorkletBaseCommon {\n __initData: WorkletInitDataRelease;\n}\n\ninterface WorkletBaseDev extends WorkletBaseCommon {\n __initData: WorkletInitDataDev;\n /**\n * `__stackDetails` is removed after parsing.\n */\n __stackDetails?: WorkletStackDetails;\n}\n\nexport type WorkletFunction<\n Args extends unknown[] = unknown[],\n ReturnValue = unknown\n> = ((...args: Args) => ReturnValue) & (WorkletBaseRelease | WorkletBaseDev);\n\n/**\n * This function allows you to determine if a given function is a worklet. It only works\n * with Reanimated Babel plugin enabled. Unless you are doing something with internals of\n * Reanimated you shouldn't need to use this function.\n *\n * ### Note\n * Do not call it before the worklet is declared, as it will always return false then. E.g.:\n *\n * ```ts\n * isWorkletFunction(myWorklet); // Will always return false.\n *\n * function myWorklet() {\n * 'worklet';\n * };\n * ```\n *\n * ### Maintainer note\n * This function works well on the JS thread performance-wise, since the JIT can inline it.\n * However, on other threads it will not get optimized and we will get a function call overhead.\n * We want to change it in the future, but it's not feasible at the moment.\n */\nexport function isWorkletFunction<\n Args extends unknown[] = unknown[],\n ReturnValue = unknown,\n BuildType extends WorkletBaseDev | WorkletBaseRelease = WorkletBaseDev\n>(value: unknown): value is WorkletFunction<Args, ReturnValue> & BuildType {\n 'worklet';\n // Since host objects always return true for `in` operator, we have to use dot notation to check if the property exists.\n // See https://github.com/facebook/hermes/blob/340726ef8cf666a7cce75bc60b02fa56b3e54560/lib/VM/JSObject.cpp#L1276.\n return (\n typeof value === 'function' &&\n !!(value as unknown as Record<string, unknown>).__workletHash\n );\n}\n\nexport type AnimatedPropsAdapterFunction = (\n props: Record<string, unknown>\n) => void;\n\nexport type AnimatedPropsAdapterWorklet = WorkletFunction<\n [props: Record<string, unknown>],\n void\n>;\n\nexport interface NestedObject<T> {\n [key: string]: NestedObjectValues<T>;\n}\n\nexport type NestedObjectValues<T> =\n | T\n | Array<NestedObjectValues<T>>\n | NestedObject<T>;\n\ntype Animatable = number | string | Array<number>;\n\nexport type AnimatableValueObject = { [key: string]: Animatable };\n\nexport type AnimatableValue = Animatable | AnimatableValueObject;\n\nexport interface AnimationObject<T = AnimatableValue> {\n [key: string]: any;\n callback?: AnimationCallback;\n current?: T;\n toValue?: AnimationObject<T>['current'];\n startValue?: AnimationObject<T>['current'];\n finished?: boolean;\n strippedCurrent?: number;\n cancelled?: boolean;\n reduceMotion?: boolean;\n\n __prefix?: string;\n __suffix?: string;\n onFrame: (animation: any, timestamp: Timestamp) => boolean;\n onStart: (\n nextAnimation: any,\n current: any,\n timestamp: Timestamp,\n previousAnimation: any\n ) => void;\n}\n\nexport interface Animation<T extends AnimationObject> extends AnimationObject {\n onFrame: (animation: T, timestamp: Timestamp) => boolean;\n onStart: (\n nextAnimation: T,\n current: AnimatableValue,\n timestamp: Timestamp,\n previousAnimation: Animation<any> | null | T\n ) => void;\n}\n\nexport enum SensorType {\n ACCELEROMETER = 1,\n GYROSCOPE = 2,\n GRAVITY = 3,\n MAGNETIC_FIELD = 4,\n ROTATION = 5,\n}\nexport enum IOSReferenceFrame {\n XArbitraryZVertical,\n XArbitraryCorrectedZVertical,\n XMagneticNorthZVertical,\n XTrueNorthZVertical,\n Auto,\n}\n\nexport type SensorConfig = {\n interval: number | 'auto';\n adjustToInterfaceOrientation: boolean;\n iosReferenceFrame: IOSReferenceFrame;\n};\n\nexport type AnimatedSensor<T extends Value3D | ValueRotation> = {\n sensor: SharedValue<T>;\n unregister: () => void;\n isAvailable: boolean;\n config: SensorConfig;\n};\n\n/**\n * A function called upon animation completion. If the animation is cancelled, the callback will receive `false` as the argument; otherwise, it will receive `true`.\n */\nexport type AnimationCallback = (\n finished?: boolean,\n current?: AnimatableValue\n) => void;\n\nexport type Timestamp = number;\n\nexport type Value3D = {\n x: number;\n y: number;\n z: number;\n interfaceOrientation: InterfaceOrientation;\n};\n\nexport type ValueRotation = {\n qw: number;\n qx: number;\n qy: number;\n qz: number;\n yaw: number;\n pitch: number;\n roll: number;\n interfaceOrientation: InterfaceOrientation;\n};\n\nexport enum InterfaceOrientation {\n ROTATION_0 = 0,\n ROTATION_90 = 90,\n ROTATION_180 = 180,\n ROTATION_270 = 270,\n}\n\nexport type ShadowNodeWrapper = {\n __hostObjectShadowNodeWrapper: never;\n};\n\nexport enum KeyboardState {\n UNKNOWN = 0,\n OPENING = 1,\n OPEN = 2,\n CLOSING = 3,\n CLOSED = 4,\n}\n\nexport type AnimatedKeyboardInfo = {\n height: SharedValue<number>;\n state: SharedValue<KeyboardState>;\n};\n\n/**\n * @param x - A number representing X coordinate relative to the parent component.\n * @param y - A number representing Y coordinate relative to the parent component.\n * @param width - A number representing the width of the component.\n * @param height - A number representing the height of the component.\n * @param pageX - A number representing X coordinate relative to the screen.\n * @param pageY - A number representing Y coordinate relative to the screen.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/advanced/measure#returns\n */\nexport interface MeasuredDimensions {\n x: number;\n y: number;\n width: number;\n height: number;\n pageX: number;\n pageY: number;\n}\n\nexport interface AnimatedKeyboardOptions {\n isStatusBarTranslucentAndroid?: boolean;\n}\n\n/**\n * @param System - If the `Reduce motion` accessibility setting is enabled on the device, disable the animation. Otherwise, enable the animation.\n * @param Always - Disable the animation.\n * @param Never - Enable the animation.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/guides/accessibility\n */\nexport enum ReduceMotion {\n System = 'system',\n Always = 'always',\n Never = 'never',\n}\n"],"mappings":"AAAA,YAAY;;AAUZ;AACA;AACA;AACA;AACA;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;;AA6DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAI/BC,KAAc,EAA2D;EACzE,SAAS;;EACT;EACA;EACA,OACE,OAAOA,KAAK,KAAK,UAAU,IAC3B,CAAC,CAAEA,KAAK,CAAwCC,aAAa;AAEjE;AA0DA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAOtB,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;;AAqB7B;AACA;AACA;;AA0BA,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAWhC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;;AAazB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
|
|
@@ -22,6 +22,7 @@ const createCellRendererComponent = itemLayoutAnimationRef => {
|
|
|
22
22
|
|
|
23
23
|
// Since createAnimatedComponent return type is ComponentClass that has the props of the argument,
|
|
24
24
|
// but not things like NativeMethods, etc. we need to add them manually by extending the type.
|
|
25
|
+
|
|
25
26
|
// We need explicit any here, because this is the exact same type that is used in React Native types.
|
|
26
27
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
28
|
const FlatListForwardRefRender = function (props, ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","React","forwardRef","useRef","FlatList","AnimatedView","createAnimatedComponent","LayoutAnimationConfig","AnimatedFlatList","createCellRendererComponent","itemLayoutAnimationRef","CellRendererComponent","props","createElement","layout","current","onLayout","style","children","FlatListForwardRefRender","ref","itemLayoutAnimation","skipEnteringExitingAnimations","restProps","scrollEventThrottle","useMemo","animatedFlatList","undefined","skipEntering","skipExiting","ReanimatedFlatList"],"sources":["FlatList.tsx"],"sourcesContent":["'use strict';\nimport React, { forwardRef, useRef } from 'react';\nimport type {\n FlatListProps,\n LayoutChangeEvent,\n StyleProp,\n ViewStyle,\n} from 'react-native';\nimport { FlatList } from 'react-native';\nimport { AnimatedView } from './View';\nimport { createAnimatedComponent } from '../../createAnimatedComponent';\nimport type { ILayoutAnimationBuilder } from '../layoutReanimation/animationBuilder/commonTypes';\nimport { LayoutAnimationConfig } from './LayoutAnimationConfig';\nimport type { AnimatedProps, AnimatedStyle } from '../helperTypes';\n\nconst AnimatedFlatList = createAnimatedComponent(FlatList);\n\ninterface CellRendererComponentProps {\n onLayout?: ((event: LayoutChangeEvent) => void) | undefined;\n children: React.ReactNode;\n style?: StyleProp<AnimatedStyle<ViewStyle>>;\n}\n\nconst createCellRendererComponent = (\n itemLayoutAnimationRef?: React.MutableRefObject<\n ILayoutAnimationBuilder | undefined\n >\n) => {\n const CellRendererComponent = (props: CellRendererComponentProps) => {\n return (\n <AnimatedView\n // TODO TYPESCRIPT This is temporary cast is to get rid of .d.ts file.\n layout={itemLayoutAnimationRef?.current as any}\n onLayout={props.onLayout}\n style={props.style}>\n {props.children}\n </AnimatedView>\n );\n };\n\n return CellRendererComponent;\n};\n\ninterface ReanimatedFlatListPropsWithLayout<T>\n extends AnimatedProps<FlatListProps<T>> {\n /**\n * Lets you pass layout animation directly to the FlatList item.\n */\n itemLayoutAnimation?: ILayoutAnimationBuilder;\n /**\n * Lets you skip entering and exiting animations of FlatList items when on FlatList mount or unmount.\n */\n skipEnteringExitingAnimations?: boolean;\n}\n\nexport type FlatListPropsWithLayout<T> = ReanimatedFlatListPropsWithLayout<T>;\n\n// Since createAnimatedComponent return type is ComponentClass that has the props of the argument,\n// but not things like NativeMethods, etc. we need to add them manually by extending the type.\ninterface AnimatedFlatListComplement<T> extends FlatList<T> {\n getNode(): FlatList<T>;\n}\n\n// We need explicit any here, because this is the exact same type that is used in React Native types.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FlatListForwardRefRender = function <Item = any>(\n props: ReanimatedFlatListPropsWithLayout<Item>,\n ref: React.ForwardedRef<FlatList>\n) {\n const { itemLayoutAnimation, skipEnteringExitingAnimations, ...restProps } =\n props;\n\n // Set default scrollEventThrottle, because user expects\n // to have continuous scroll events and\n // react-native defaults it to 50 for FlatLists.\n // We set it to 1, so we have peace until\n // there are 960 fps screens.\n if (!('scrollEventThrottle' in restProps)) {\n restProps.scrollEventThrottle = 1;\n }\n\n const itemLayoutAnimationRef = useRef(itemLayoutAnimation);\n itemLayoutAnimationRef.current = itemLayoutAnimation;\n\n const CellRendererComponent = React.useMemo(\n () => createCellRendererComponent(itemLayoutAnimationRef),\n [itemLayoutAnimationRef]\n );\n\n const animatedFlatList = (\n // @ts-expect-error In its current type state, createAnimatedComponent cannot create generic components.\n <AnimatedFlatList\n ref={ref}\n {...restProps}\n CellRendererComponent={CellRendererComponent}\n />\n );\n\n if (skipEnteringExitingAnimations === undefined) {\n return animatedFlatList;\n }\n\n return (\n <LayoutAnimationConfig skipEntering skipExiting>\n {animatedFlatList}\n </LayoutAnimationConfig>\n );\n};\n\nexport const ReanimatedFlatList = forwardRef(FlatListForwardRefRender) as <\n // We need explicit any here, because this is the exact same type that is used in React Native types.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ItemT = any\n>(\n props: ReanimatedFlatListPropsWithLayout<ItemT> & {\n ref?: React.ForwardedRef<FlatList>;\n }\n) => React.ReactElement;\n\nexport type ReanimatedFlatList<T> = typeof AnimatedFlatList &\n AnimatedFlatListComplement<T>;\n"],"mappings":"AAAA,YAAY;;AAAC,SAAAA,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AACb,OAAOQ,KAAK,IAAIC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAOjD,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,YAAY,QAAQ,QAAQ;AACrC,SAASC,uBAAuB,QAAQ,+BAA+B;AAEvE,SAASC,qBAAqB,QAAQ,yBAAyB;AAG/D,MAAMC,gBAAgB,GAAGF,uBAAuB,CAACF,QAAQ,CAAC;AAQ1D,MAAMK,2BAA2B,GAC/BC,sBAEC,IACE;EACH,MAAMC,qBAAqB,GAAIC,KAAiC,IAAK;IACnE,oBACEX,KAAA,CAAAY,aAAA,CAACR;IACC;IAAA;MACAS,MAAM,EAAEJ,sBAAsB,aAAtBA,sBAAsB,uBAAtBA,sBAAsB,CAAEK,OAAe;MAC/CC,QAAQ,EAAEJ,KAAK,CAACI,QAAS;MACzBC,KAAK,EAAEL,KAAK,CAACK;IAAM,GAClBL,KAAK,CAACM,
|
|
1
|
+
{"version":3,"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","React","forwardRef","useRef","FlatList","AnimatedView","createAnimatedComponent","LayoutAnimationConfig","AnimatedFlatList","createCellRendererComponent","itemLayoutAnimationRef","CellRendererComponent","props","createElement","layout","current","onLayout","style","children","FlatListForwardRefRender","ref","itemLayoutAnimation","skipEnteringExitingAnimations","restProps","scrollEventThrottle","useMemo","animatedFlatList","undefined","skipEntering","skipExiting","ReanimatedFlatList"],"sources":["FlatList.tsx"],"sourcesContent":["'use strict';\nimport React, { forwardRef, useRef } from 'react';\nimport type {\n FlatListProps,\n LayoutChangeEvent,\n StyleProp,\n ViewStyle,\n} from 'react-native';\nimport { FlatList } from 'react-native';\nimport { AnimatedView } from './View';\nimport { createAnimatedComponent } from '../../createAnimatedComponent';\nimport type { ILayoutAnimationBuilder } from '../layoutReanimation/animationBuilder/commonTypes';\nimport { LayoutAnimationConfig } from './LayoutAnimationConfig';\nimport type { AnimatedProps, AnimatedStyle } from '../helperTypes';\n\nconst AnimatedFlatList = createAnimatedComponent(FlatList);\n\ninterface CellRendererComponentProps {\n onLayout?: ((event: LayoutChangeEvent) => void) | undefined;\n children: React.ReactNode;\n style?: StyleProp<AnimatedStyle<ViewStyle>>;\n}\n\nconst createCellRendererComponent = (\n itemLayoutAnimationRef?: React.MutableRefObject<\n ILayoutAnimationBuilder | undefined\n >\n) => {\n const CellRendererComponent = (props: CellRendererComponentProps) => {\n return (\n <AnimatedView\n // TODO TYPESCRIPT This is temporary cast is to get rid of .d.ts file.\n layout={itemLayoutAnimationRef?.current as any}\n onLayout={props.onLayout}\n style={props.style}>\n {props.children}\n </AnimatedView>\n );\n };\n\n return CellRendererComponent;\n};\n\ninterface ReanimatedFlatListPropsWithLayout<T>\n extends AnimatedProps<FlatListProps<T>> {\n /**\n * Lets you pass layout animation directly to the FlatList item.\n */\n itemLayoutAnimation?: ILayoutAnimationBuilder;\n /**\n * Lets you skip entering and exiting animations of FlatList items when on FlatList mount or unmount.\n */\n skipEnteringExitingAnimations?: boolean;\n}\n\nexport type FlatListPropsWithLayout<T> = ReanimatedFlatListPropsWithLayout<T>;\n\n// Since createAnimatedComponent return type is ComponentClass that has the props of the argument,\n// but not things like NativeMethods, etc. we need to add them manually by extending the type.\ninterface AnimatedFlatListComplement<T> extends FlatList<T> {\n getNode(): FlatList<T>;\n}\n\n// We need explicit any here, because this is the exact same type that is used in React Native types.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FlatListForwardRefRender = function <Item = any>(\n props: ReanimatedFlatListPropsWithLayout<Item>,\n ref: React.ForwardedRef<FlatList>\n) {\n const { itemLayoutAnimation, skipEnteringExitingAnimations, ...restProps } =\n props;\n\n // Set default scrollEventThrottle, because user expects\n // to have continuous scroll events and\n // react-native defaults it to 50 for FlatLists.\n // We set it to 1, so we have peace until\n // there are 960 fps screens.\n if (!('scrollEventThrottle' in restProps)) {\n restProps.scrollEventThrottle = 1;\n }\n\n const itemLayoutAnimationRef = useRef(itemLayoutAnimation);\n itemLayoutAnimationRef.current = itemLayoutAnimation;\n\n const CellRendererComponent = React.useMemo(\n () => createCellRendererComponent(itemLayoutAnimationRef),\n [itemLayoutAnimationRef]\n );\n\n const animatedFlatList = (\n // @ts-expect-error In its current type state, createAnimatedComponent cannot create generic components.\n <AnimatedFlatList\n ref={ref}\n {...restProps}\n CellRendererComponent={CellRendererComponent}\n />\n );\n\n if (skipEnteringExitingAnimations === undefined) {\n return animatedFlatList;\n }\n\n return (\n <LayoutAnimationConfig skipEntering skipExiting>\n {animatedFlatList}\n </LayoutAnimationConfig>\n );\n};\n\nexport const ReanimatedFlatList = forwardRef(FlatListForwardRefRender) as <\n // We need explicit any here, because this is the exact same type that is used in React Native types.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ItemT = any\n>(\n props: ReanimatedFlatListPropsWithLayout<ItemT> & {\n ref?: React.ForwardedRef<FlatList>;\n }\n) => React.ReactElement;\n\nexport type ReanimatedFlatList<T> = typeof AnimatedFlatList &\n AnimatedFlatListComplement<T>;\n"],"mappings":"AAAA,YAAY;;AAAC,SAAAA,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AACb,OAAOQ,KAAK,IAAIC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAOjD,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,YAAY,QAAQ,QAAQ;AACrC,SAASC,uBAAuB,QAAQ,+BAA+B;AAEvE,SAASC,qBAAqB,QAAQ,yBAAyB;AAG/D,MAAMC,gBAAgB,GAAGF,uBAAuB,CAACF,QAAQ,CAAC;AAQ1D,MAAMK,2BAA2B,GAC/BC,sBAEC,IACE;EACH,MAAMC,qBAAqB,GAAIC,KAAiC,IAAK;IACnE,oBACEX,KAAA,CAAAY,aAAA,CAACR;IACC;IAAA;MACAS,MAAM,EAAEJ,sBAAsB,aAAtBA,sBAAsB,uBAAtBA,sBAAsB,CAAEK,OAAe;MAC/CC,QAAQ,EAAEJ,KAAK,CAACI,QAAS;MACzBC,KAAK,EAAEL,KAAK,CAACK;IAAM,GAClBL,KAAK,CAACM,QACK,CAAC;EAEnB,CAAC;EAED,OAAOP,qBAAqB;AAC9B,CAAC;;AAgBD;AACA;;AAKA;AACA;AACA,MAAMQ,wBAAwB,GAAG,SAAAA,CAC/BP,KAA8C,EAC9CQ,GAAiC,EACjC;EACA,MAAM;IAAEC,mBAAmB;IAAEC,6BAA6B;IAAE,GAAGC;EAAU,CAAC,GACxEX,KAAK;;EAEP;EACA;EACA;EACA;EACA;EACA,IAAI,EAAE,qBAAqB,IAAIW,SAAS,CAAC,EAAE;IACzCA,SAAS,CAACC,mBAAmB,GAAG,CAAC;EACnC;EAEA,MAAMd,sBAAsB,GAAGP,MAAM,CAACkB,mBAAmB,CAAC;EAC1DX,sBAAsB,CAACK,OAAO,GAAGM,mBAAmB;EAEpD,MAAMV,qBAAqB,GAAGV,KAAK,CAACwB,OAAO,CACzC,MAAMhB,2BAA2B,CAACC,sBAAsB,CAAC,EACzD,CAACA,sBAAsB,CACzB,CAAC;EAED,MAAMgB,gBAAgB;EAAA;EACpB;EACAzB,KAAA,CAAAY,aAAA,CAACL,gBAAgB,EAAArB,QAAA;IACfiC,GAAG,EAAEA;EAAI,GACLG,SAAS;IACbZ,qBAAqB,EAAEA;EAAsB,EAC9C,CACF;EAED,IAAIW,6BAA6B,KAAKK,SAAS,EAAE;IAC/C,OAAOD,gBAAgB;EACzB;EAEA,oBACEzB,KAAA,CAAAY,aAAA,CAACN,qBAAqB;IAACqB,YAAY;IAACC,WAAW;EAAA,GAC5CH,gBACoB,CAAC;AAE5B,CAAC;AAED,OAAO,MAAMI,kBAAkB,gBAAG5B,UAAU,CAACiB,wBAAwB,CAQ9C","ignoreList":[]}
|
|
@@ -5,5 +5,6 @@ import { createAnimatedComponent } from '../../createAnimatedComponent';
|
|
|
5
5
|
|
|
6
6
|
// Since createAnimatedComponent return type is ComponentClass that has the props of the argument,
|
|
7
7
|
// but not things like NativeMethods, etc. we need to add them manually by extending the type.
|
|
8
|
+
|
|
8
9
|
export const AnimatedImage = createAnimatedComponent(Image);
|
|
9
10
|
//# sourceMappingURL=Image.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Image","createAnimatedComponent","AnimatedImage"],"sources":["Image.ts"],"sourcesContent":["'use strict';\nimport { Image } from 'react-native';\nimport { createAnimatedComponent } from '../../createAnimatedComponent';\n\n// Since createAnimatedComponent return type is ComponentClass that has the props of the argument,\n// but not things like NativeMethods, etc. we need to add them manually by extending the type.\ninterface AnimatedImageComplement extends Image {\n getNode(): Image;\n}\n\nexport const AnimatedImage = createAnimatedComponent(Image);\n\nexport type AnimatedImage = typeof AnimatedImage & AnimatedImageComplement;\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,KAAK,QAAQ,cAAc;AACpC,SAASC,uBAAuB,QAAQ,+BAA+B;;AAEvE;AACA
|
|
1
|
+
{"version":3,"names":["Image","createAnimatedComponent","AnimatedImage"],"sources":["Image.ts"],"sourcesContent":["'use strict';\nimport { Image } from 'react-native';\nimport { createAnimatedComponent } from '../../createAnimatedComponent';\n\n// Since createAnimatedComponent return type is ComponentClass that has the props of the argument,\n// but not things like NativeMethods, etc. we need to add them manually by extending the type.\ninterface AnimatedImageComplement extends Image {\n getNode(): Image;\n}\n\nexport const AnimatedImage = createAnimatedComponent(Image);\n\nexport type AnimatedImage = typeof AnimatedImage & AnimatedImageComplement;\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,KAAK,QAAQ,cAAc;AACpC,SAASC,uBAAuB,QAAQ,+BAA+B;;AAEvE;AACA;;AAKA,OAAO,MAAMC,aAAa,GAAGD,uBAAuB,CAACD,KAAK,CAAC","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ export const SkipEnteringContext = /*#__PURE__*/createContext(null);
|
|
|
7
7
|
|
|
8
8
|
// skipEntering - don't animate entering of children on wrapper mount
|
|
9
9
|
// skipExiting - don't animate exiting of children on wrapper unmount
|
|
10
|
+
|
|
10
11
|
function SkipEntering(props) {
|
|
11
12
|
const skipValueRef = useRef(props.shouldSkip);
|
|
12
13
|
useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Children","Component","createContext","useEffect","useRef","setShouldAnimateExitingForTag","findNodeHandle","SkipEnteringContext","SkipEntering","props","skipValueRef","shouldSkip","current","createElement","Provider","value","children","LayoutAnimationConfig","getMaybeWrappedChildren","count","skipExiting","map","child","setShouldAnimateExiting","tag","componentWillUnmount","undefined","render","skipEntering"],"sources":["LayoutAnimationConfig.tsx"],"sourcesContent":["'use strict';\nimport React, {\n Children,\n Component,\n createContext,\n useEffect,\n useRef,\n} from 'react';\nimport type { ReactNode } from 'react';\nimport { setShouldAnimateExitingForTag } from '../core';\nimport { findNodeHandle } from 'react-native';\n\nexport const SkipEnteringContext =\n createContext<React.MutableRefObject<boolean> | null>(null);\n\n// skipEntering - don't animate entering of children on wrapper mount\n// skipExiting - don't animate exiting of children on wrapper unmount\ninterface LayoutAnimationConfigProps {\n skipEntering?: boolean;\n skipExiting?: boolean;\n children: ReactNode;\n}\n\nfunction SkipEntering(props: { shouldSkip: boolean; children: ReactNode }) {\n const skipValueRef = useRef(props.shouldSkip);\n\n useEffect(() => {\n skipValueRef.current = false;\n }, [skipValueRef]);\n\n return (\n <SkipEnteringContext.Provider value={skipValueRef}>\n {props.children}\n </SkipEnteringContext.Provider>\n );\n}\n\n// skipExiting (unlike skipEntering) cannot be done by conditionally\n// configuring the animation in `createAnimatedComponent`, since at this stage\n// we don't know if the wrapper is going to be unmounted or not.\n// That's why we need to pass the skipExiting flag to the native side\n// when the wrapper is unmounted to prevent the animation.\n// Since `ReactNode` can be a list of nodes, we wrap every child with our wrapper\n// so we are able to access its tag with `findNodeHandle`.\n/**\n * A component that lets you skip entering and exiting animations.\n *\n * @param skipEntering - A boolean indicating whether children's entering animations should be skipped when `LayoutAnimationConfig` is mounted.\n * @param skipExiting - A boolean indicating whether children's exiting animations should be skipped when LayoutAnimationConfig is unmounted.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/layout-animations/layout-animation-config/\n */\nexport class LayoutAnimationConfig extends Component<LayoutAnimationConfigProps> {\n getMaybeWrappedChildren() {\n return Children.count(this.props.children) > 1 && this.props.skipExiting\n ? Children.map(this.props.children, (child) => (\n <LayoutAnimationConfig skipExiting>{child}</LayoutAnimationConfig>\n ))\n : this.props.children;\n }\n\n setShouldAnimateExiting() {\n if (Children.count(this.props.children) === 1) {\n const tag = findNodeHandle(this);\n if (tag) {\n setShouldAnimateExitingForTag(tag, !this.props.skipExiting);\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this.props.skipExiting !== undefined) {\n this.setShouldAnimateExiting();\n }\n }\n\n render(): ReactNode {\n const children = this.getMaybeWrappedChildren();\n\n if (this.props.skipEntering === undefined) {\n return children;\n }\n\n return (\n <SkipEntering shouldSkip={this.props.skipEntering}>\n {children}\n </SkipEntering>\n );\n }\n}\n"],"mappings":"AAAA,YAAY;;AACZ,OAAOA,KAAK,IACVC,QAAQ,EACRC,SAAS,EACTC,aAAa,EACbC,SAAS,EACTC,MAAM,QACD,OAAO;AAEd,SAASC,6BAA6B,QAAQ,SAAS;AACvD,SAASC,cAAc,QAAQ,cAAc;AAE7C,OAAO,MAAMC,mBAAmB,gBAC9BL,aAAa,CAAyC,IAAI,CAAC;;AAE7D;AACA
|
|
1
|
+
{"version":3,"names":["React","Children","Component","createContext","useEffect","useRef","setShouldAnimateExitingForTag","findNodeHandle","SkipEnteringContext","SkipEntering","props","skipValueRef","shouldSkip","current","createElement","Provider","value","children","LayoutAnimationConfig","getMaybeWrappedChildren","count","skipExiting","map","child","setShouldAnimateExiting","tag","componentWillUnmount","undefined","render","skipEntering"],"sources":["LayoutAnimationConfig.tsx"],"sourcesContent":["'use strict';\nimport React, {\n Children,\n Component,\n createContext,\n useEffect,\n useRef,\n} from 'react';\nimport type { ReactNode } from 'react';\nimport { setShouldAnimateExitingForTag } from '../core';\nimport { findNodeHandle } from 'react-native';\n\nexport const SkipEnteringContext =\n createContext<React.MutableRefObject<boolean> | null>(null);\n\n// skipEntering - don't animate entering of children on wrapper mount\n// skipExiting - don't animate exiting of children on wrapper unmount\ninterface LayoutAnimationConfigProps {\n skipEntering?: boolean;\n skipExiting?: boolean;\n children: ReactNode;\n}\n\nfunction SkipEntering(props: { shouldSkip: boolean; children: ReactNode }) {\n const skipValueRef = useRef(props.shouldSkip);\n\n useEffect(() => {\n skipValueRef.current = false;\n }, [skipValueRef]);\n\n return (\n <SkipEnteringContext.Provider value={skipValueRef}>\n {props.children}\n </SkipEnteringContext.Provider>\n );\n}\n\n// skipExiting (unlike skipEntering) cannot be done by conditionally\n// configuring the animation in `createAnimatedComponent`, since at this stage\n// we don't know if the wrapper is going to be unmounted or not.\n// That's why we need to pass the skipExiting flag to the native side\n// when the wrapper is unmounted to prevent the animation.\n// Since `ReactNode` can be a list of nodes, we wrap every child with our wrapper\n// so we are able to access its tag with `findNodeHandle`.\n/**\n * A component that lets you skip entering and exiting animations.\n *\n * @param skipEntering - A boolean indicating whether children's entering animations should be skipped when `LayoutAnimationConfig` is mounted.\n * @param skipExiting - A boolean indicating whether children's exiting animations should be skipped when LayoutAnimationConfig is unmounted.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/layout-animations/layout-animation-config/\n */\nexport class LayoutAnimationConfig extends Component<LayoutAnimationConfigProps> {\n getMaybeWrappedChildren() {\n return Children.count(this.props.children) > 1 && this.props.skipExiting\n ? Children.map(this.props.children, (child) => (\n <LayoutAnimationConfig skipExiting>{child}</LayoutAnimationConfig>\n ))\n : this.props.children;\n }\n\n setShouldAnimateExiting() {\n if (Children.count(this.props.children) === 1) {\n const tag = findNodeHandle(this);\n if (tag) {\n setShouldAnimateExitingForTag(tag, !this.props.skipExiting);\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this.props.skipExiting !== undefined) {\n this.setShouldAnimateExiting();\n }\n }\n\n render(): ReactNode {\n const children = this.getMaybeWrappedChildren();\n\n if (this.props.skipEntering === undefined) {\n return children;\n }\n\n return (\n <SkipEntering shouldSkip={this.props.skipEntering}>\n {children}\n </SkipEntering>\n );\n }\n}\n"],"mappings":"AAAA,YAAY;;AACZ,OAAOA,KAAK,IACVC,QAAQ,EACRC,SAAS,EACTC,aAAa,EACbC,SAAS,EACTC,MAAM,QACD,OAAO;AAEd,SAASC,6BAA6B,QAAQ,SAAS;AACvD,SAASC,cAAc,QAAQ,cAAc;AAE7C,OAAO,MAAMC,mBAAmB,gBAC9BL,aAAa,CAAyC,IAAI,CAAC;;AAE7D;AACA;;AAOA,SAASM,YAAYA,CAACC,KAAmD,EAAE;EACzE,MAAMC,YAAY,GAAGN,MAAM,CAACK,KAAK,CAACE,UAAU,CAAC;EAE7CR,SAAS,CAAC,MAAM;IACdO,YAAY,CAACE,OAAO,GAAG,KAAK;EAC9B,CAAC,EAAE,CAACF,YAAY,CAAC,CAAC;EAElB,oBACEX,KAAA,CAAAc,aAAA,CAACN,mBAAmB,CAACO,QAAQ;IAACC,KAAK,EAAEL;EAAa,GAC/CD,KAAK,CAACO,QACqB,CAAC;AAEnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,SAAShB,SAAS,CAA6B;EAC/EiB,uBAAuBA,CAAA,EAAG;IACxB,OAAOlB,QAAQ,CAACmB,KAAK,CAAC,IAAI,CAACV,KAAK,CAACO,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAACP,KAAK,CAACW,WAAW,GACpEpB,QAAQ,CAACqB,GAAG,CAAC,IAAI,CAACZ,KAAK,CAACO,QAAQ,EAAGM,KAAK,iBACtCvB,KAAA,CAAAc,aAAA,CAACI,qBAAqB;MAACG,WAAW;IAAA,GAAEE,KAA6B,CAClE,CAAC,GACF,IAAI,CAACb,KAAK,CAACO,QAAQ;EACzB;EAEAO,uBAAuBA,CAAA,EAAG;IACxB,IAAIvB,QAAQ,CAACmB,KAAK,CAAC,IAAI,CAACV,KAAK,CAACO,QAAQ,CAAC,KAAK,CAAC,EAAE;MAC7C,MAAMQ,GAAG,GAAGlB,cAAc,CAAC,IAAI,CAAC;MAChC,IAAIkB,GAAG,EAAE;QACPnB,6BAA6B,CAACmB,GAAG,EAAE,CAAC,IAAI,CAACf,KAAK,CAACW,WAAW,CAAC;MAC7D;IACF;EACF;EAEAK,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,IAAI,CAAChB,KAAK,CAACW,WAAW,KAAKM,SAAS,EAAE;MACxC,IAAI,CAACH,uBAAuB,CAAC,CAAC;IAChC;EACF;EAEAI,MAAMA,CAAA,EAAc;IAClB,MAAMX,QAAQ,GAAG,IAAI,CAACE,uBAAuB,CAAC,CAAC;IAE/C,IAAI,IAAI,CAACT,KAAK,CAACmB,YAAY,KAAKF,SAAS,EAAE;MACzC,OAAOV,QAAQ;IACjB;IAEA,oBACEjB,KAAA,CAAAc,aAAA,CAACL,YAAY;MAACG,UAAU,EAAE,IAAI,CAACF,KAAK,CAACmB;IAAa,GAC/CZ,QACW,CAAC;EAEnB;AACF","ignoreList":[]}
|
|
@@ -110,10 +110,9 @@ function UiPerformance() {
|
|
|
110
110
|
const uiFps = useSharedValue(null);
|
|
111
111
|
const totalRenderTime = useSharedValue(0);
|
|
112
112
|
const circularBuffer = useSharedValue(null);
|
|
113
|
-
useFrameCallback(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
} = _ref;
|
|
113
|
+
useFrameCallback(({
|
|
114
|
+
timestamp
|
|
115
|
+
}) => {
|
|
117
116
|
if (circularBuffer.value === null) {
|
|
118
117
|
circularBuffer.value = createCircularDoublesBuffer(DEFAULT_BUFFER_SIZE);
|
|
119
118
|
}
|