@react-native-ohos/react-native-reanimated 4.0.1 → 4.0.2-beta.1
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/compatibility.json +161 -161
- package/harmony/reanimated/BuildProfile.ets +1 -1
- package/harmony/reanimated/build-profile.json5 +18 -18
- package/harmony/reanimated/hvigorfile.ts +4 -4
- package/harmony/reanimated/index.ets +4 -4
- package/harmony/reanimated/oh-package-lock.json5 +39 -0
- package/harmony/reanimated/oh-package.json5 +12 -12
- package/harmony/reanimated/src/main/cpp/CMakeLists.txt +65 -62
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +81 -81
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +46 -46
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -390
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -16
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -30
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -46
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -23
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -53
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -21
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -166
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -71
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -368
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -53
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -594
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -67
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -52
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -26
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -156
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -76
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +94 -94
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -33
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -48
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -31
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -135
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -61
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -100
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +45 -45
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -81
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -53
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -122
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -38
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -82
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -63
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -118
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -174
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -111
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -196
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -66
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -134
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -44
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -174
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -49
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -45
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -26
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -90
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -43
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -17
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -13
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -127
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -51
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -145
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -47
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -69
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -22
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -66
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -15
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -28
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -15
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -13
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -12
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -157
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -189
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -76
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -66
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -136
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -40
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -38
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -24
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -58
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -24
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -17
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -95
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -36
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -41
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -32
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -99
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -37
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -308
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -100
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -19
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -94
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -18
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -43
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -26
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -103
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -42
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -224
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -52
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -218
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -89
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -149
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -33
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -208
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -56
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -42
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -41
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -39
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -28
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -25
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -39
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -25
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -47
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -43
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -70
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -40
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -146
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -71
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -155
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -53
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -170
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -67
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -12
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -41
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -31
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -193
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -77
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -340
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -80
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -45
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -29
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -167
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -51
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -61
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -33
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -80
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -39
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -93
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -36
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +111 -111
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -33
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -75
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -45
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -12
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -10
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -36
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -23
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -149
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -32
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +113 -113
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +49 -49
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +46 -46
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +56 -56
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +37 -37
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +104 -104
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +22 -22
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -72
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -25
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -160
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -71
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -161
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -65
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +11 -11
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +137 -137
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +82 -82
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -79
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -81
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -864
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -214
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.cpp +897 -897
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -220
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +31 -31
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +146 -146
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -456
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -102
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -544
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -119
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -39
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +1380 -1380
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +230 -230
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +183 -183
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +93 -93
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +54 -54
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +28 -28
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +58 -58
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +31 -31
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -18
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -44
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +67 -67
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +114 -114
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -46
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.h +18 -18
- package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +233 -233
- package/harmony/reanimated/src/main/cpp/ReanimatedModule.h +23 -23
- package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +56 -56
- package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.h +30 -30
- package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +44 -44
- package/harmony/reanimated/src/main/cpp/ReanimatedPackage.h +16 -16
- package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +265 -265
- package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -36
- package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +35 -35
- package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -23
- package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.cpp +23 -23
- package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +19 -19
- package/harmony/reanimated/src/main/cpp/TransformParser.h +93 -93
- package/harmony/reanimated/src/main/ets/AnimationManager.ts +60 -60
- package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +51 -51
- package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +25 -25
- package/harmony/reanimated/src/main/module.json5 +12 -12
- package/harmony/reanimated/src/main/resources/base/element/color.json +7 -7
- package/harmony/reanimated/src/main/resources/base/element/string.json +15 -15
- package/harmony/reanimated/src/main/resources/base/profile/main_pages.json +5 -5
- package/harmony/reanimated/src/main/resources/en_US/element/string.json +15 -15
- package/harmony/reanimated/src/main/resources/zh_CN/element/string.json +15 -15
- package/harmony/reanimated/ts.ts +6 -6
- package/harmony/reanimated.har +0 -0
- package/package.json +70 -69
- package/scripts/deploy.js +191 -191
- package/scripts/set-reanimated-version.js +37 -37
- package/scripts/update-version.js +119 -119
- package/scripts/validate-react-native-version.js +46 -46
- package/scripts/validate-worklets-build.js +17 -17
- package/scripts/validate-worklets-version.js +84 -84
- package/scripts/worklets-version.json +4 -4
- package/src/index.ts +9 -9
|
@@ -1,308 +1,308 @@
|
|
|
1
|
-
#include <reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h>
|
|
2
|
-
|
|
3
|
-
#include <reanimated/CSS/interpolation/filters/FilterOperation.h>
|
|
4
|
-
#include <reanimated/CSS/interpolation/transforms/TransformOperation.h>
|
|
5
|
-
|
|
6
|
-
namespace reanimated::css {
|
|
7
|
-
|
|
8
|
-
// OperationsStyleInterpolator implementation
|
|
9
|
-
|
|
10
|
-
OperationsStyleInterpolator::OperationsStyleInterpolator(
|
|
11
|
-
const PropertyPath &propertyPath,
|
|
12
|
-
const std::shared_ptr<StyleOperationInterpolators> &interpolators,
|
|
13
|
-
const std::shared_ptr<ViewStylesRepository> &viewStylesRepository,
|
|
14
|
-
const folly::dynamic &defaultStyleValueDynamic)
|
|
15
|
-
: PropertyInterpolator(propertyPath, viewStylesRepository),
|
|
16
|
-
interpolators_(interpolators),
|
|
17
|
-
defaultStyleValueDynamic_(defaultStyleValueDynamic) {}
|
|
18
|
-
|
|
19
|
-
folly::dynamic OperationsStyleInterpolator::getStyleValue(const std::shared_ptr<const ShadowNode> &shadowNode) const {
|
|
20
|
-
return viewStylesRepository_->getStyleProp(shadowNode->getTag(), propertyPath_);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
folly::dynamic OperationsStyleInterpolator::getResetStyle(const std::shared_ptr<const ShadowNode> &shadowNode) const {
|
|
24
|
-
auto styleValue = getStyleValue(shadowNode);
|
|
25
|
-
|
|
26
|
-
if (!styleValue.isArray()) {
|
|
27
|
-
return defaultStyleValueDynamic_;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return styleValue;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
folly::dynamic OperationsStyleInterpolator::getFirstKeyframeValue() const {
|
|
34
|
-
const auto &fromOperations = keyframes_.front()->fromOperations;
|
|
35
|
-
return fromOperations.has_value() ? convertOperationsToDynamic(fromOperations.value()) : defaultStyleValueDynamic_;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
folly::dynamic OperationsStyleInterpolator::getLastKeyframeValue() const {
|
|
39
|
-
const auto &toOperations = keyframes_.back()->toOperations;
|
|
40
|
-
return toOperations.has_value() ? convertOperationsToDynamic(toOperations.value()) : defaultStyleValueDynamic_;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
bool OperationsStyleInterpolator::equalsReversingAdjustedStartValue(const folly::dynamic &propertyValue) const {
|
|
44
|
-
const auto propertyOperations = parseStyleOperations(propertyValue);
|
|
45
|
-
|
|
46
|
-
if (!reversingAdjustedStartValue_.has_value()) {
|
|
47
|
-
return !propertyOperations.has_value();
|
|
48
|
-
} else if (!propertyOperations.has_value()) {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const auto &reversingAdjustedOperationsValue = reversingAdjustedStartValue_.value();
|
|
53
|
-
const auto &propertyOperationsValue = propertyOperations.value();
|
|
54
|
-
|
|
55
|
-
if (reversingAdjustedOperationsValue.size() != propertyOperationsValue.size()) {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
for (size_t i = 0; i < reversingAdjustedOperationsValue.size(); ++i) {
|
|
60
|
-
if (*reversingAdjustedOperationsValue[i] != *propertyOperationsValue[i]) {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return true;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
folly::dynamic OperationsStyleInterpolator::interpolate(
|
|
69
|
-
const std::shared_ptr<const ShadowNode> &shadowNode,
|
|
70
|
-
const std::shared_ptr<KeyframeProgressProvider> &progressProvider,
|
|
71
|
-
const double fallbackInterpolateThreshold) const {
|
|
72
|
-
const auto currentIndex = getIndexOfCurrentKeyframe(progressProvider);
|
|
73
|
-
|
|
74
|
-
// Get or create the current keyframe
|
|
75
|
-
auto keyframe = keyframes_[currentIndex];
|
|
76
|
-
if (!keyframe->fromOperations.has_value() || !keyframe->toOperations.has_value()) {
|
|
77
|
-
// If the value is nullopt, we would have to read it from the view style
|
|
78
|
-
// and build the keyframe again
|
|
79
|
-
const auto fallbackValue = getFallbackValue(shadowNode);
|
|
80
|
-
keyframe = createStyleOperationsKeyframe(
|
|
81
|
-
keyframe->fromOffset,
|
|
82
|
-
keyframe->toOffset,
|
|
83
|
-
keyframe->fromOperations.value_or(fallbackValue),
|
|
84
|
-
keyframe->toOperations.value_or(fallbackValue));
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
double progress = progressProvider->getKeyframeProgress(keyframe->fromOffset, keyframe->toOffset);
|
|
88
|
-
|
|
89
|
-
if (keyframe->isDiscrete) {
|
|
90
|
-
const auto &operations =
|
|
91
|
-
progress < fallbackInterpolateThreshold ? keyframe->fromOperations.value() : keyframe->toOperations.value();
|
|
92
|
-
return convertOperationsToDynamic(operations);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Interpolate the current keyframe
|
|
96
|
-
return interpolateOperations(
|
|
97
|
-
shadowNode,
|
|
98
|
-
progress,
|
|
99
|
-
keyframe->fromOperations.value(),
|
|
100
|
-
keyframe->toOperations.value(),
|
|
101
|
-
fallbackInterpolateThreshold);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
void OperationsStyleInterpolator::updateKeyframes(jsi::Runtime &rt, const jsi::Value &keyframes) {
|
|
105
|
-
// Step 1: Parse keyframes
|
|
106
|
-
const auto parsedKeyframes = parseJSIKeyframes(rt, keyframes);
|
|
107
|
-
|
|
108
|
-
// Step 2: Convert keyframes to StyleOperations
|
|
109
|
-
std::vector<std::pair<double, std::optional<StyleOperations>>> operations;
|
|
110
|
-
operations.reserve(parsedKeyframes.size());
|
|
111
|
-
for (const auto &[offset, value] : parsedKeyframes) {
|
|
112
|
-
operations.emplace_back(offset, parseStyleOperations(rt, value));
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Step 3: Prepare keyframe interpolation pairs (convert keyframe values in
|
|
116
|
-
// both keyframes to the same type)
|
|
117
|
-
// There will be one less keyframe than the number of keyframes in the jsi
|
|
118
|
-
// array as we create interpolation pairs
|
|
119
|
-
const auto keyframesCount = operations.size() - 1;
|
|
120
|
-
keyframes_.clear();
|
|
121
|
-
keyframes_.reserve(keyframesCount);
|
|
122
|
-
|
|
123
|
-
for (size_t i = 0; i < keyframesCount; ++i) {
|
|
124
|
-
keyframes_.push_back(createStyleOperationsKeyframe(
|
|
125
|
-
operations[i].first, operations[i + 1].first, operations[i].second, operations[i + 1].second));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
void OperationsStyleInterpolator::updateKeyframesFromStyleChange(
|
|
130
|
-
const folly::dynamic &oldStyleValue,
|
|
131
|
-
const folly::dynamic &newStyleValue,
|
|
132
|
-
const folly::dynamic &lastUpdateValue) {
|
|
133
|
-
if (oldStyleValue.isNull()) {
|
|
134
|
-
reversingAdjustedStartValue_ = std::nullopt;
|
|
135
|
-
} else {
|
|
136
|
-
reversingAdjustedStartValue_ = parseStyleOperations(oldStyleValue);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
const auto &prevStyleValue = lastUpdateValue.isNull() ? oldStyleValue : lastUpdateValue;
|
|
140
|
-
|
|
141
|
-
keyframes_.clear();
|
|
142
|
-
keyframes_.reserve(1);
|
|
143
|
-
keyframes_.emplace_back(createStyleOperationsKeyframe(
|
|
144
|
-
0,
|
|
145
|
-
1,
|
|
146
|
-
parseStyleOperations(prevStyleValue).value_or(StyleOperations{}),
|
|
147
|
-
parseStyleOperations(newStyleValue).value_or(StyleOperations{})));
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
std::optional<StyleOperations> OperationsStyleInterpolator::parseStyleOperations(
|
|
151
|
-
jsi::Runtime &rt,
|
|
152
|
-
const jsi::Value &values) const {
|
|
153
|
-
if (values.isUndefined()) {
|
|
154
|
-
return std::nullopt;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
const auto operationsArray = values.asObject(rt).asArray(rt);
|
|
158
|
-
const auto operationsCount = operationsArray.size(rt);
|
|
159
|
-
|
|
160
|
-
StyleOperations styleOperations;
|
|
161
|
-
styleOperations.reserve(operationsCount);
|
|
162
|
-
|
|
163
|
-
for (size_t i = 0; i < operationsCount; ++i) {
|
|
164
|
-
styleOperations.emplace_back(createStyleOperation(rt, operationsArray.getValueAtIndex(rt, i)));
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return styleOperations;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
std::optional<StyleOperations> OperationsStyleInterpolator::parseStyleOperations(const folly::dynamic &values) const {
|
|
171
|
-
if (values.empty()) {
|
|
172
|
-
return std::nullopt;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const auto &operationsArray = values;
|
|
176
|
-
const auto operationsCount = operationsArray.size();
|
|
177
|
-
|
|
178
|
-
StyleOperations styleOperations;
|
|
179
|
-
styleOperations.reserve(operationsCount);
|
|
180
|
-
|
|
181
|
-
for (size_t i = 0; i < operationsCount; ++i) {
|
|
182
|
-
styleOperations.emplace_back(createStyleOperation(operationsArray[i]));
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return styleOperations;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
std::shared_ptr<StyleOperationsKeyframe> OperationsStyleInterpolator::createStyleOperationsKeyframe(
|
|
189
|
-
const double fromOffset,
|
|
190
|
-
const double toOffset,
|
|
191
|
-
const std::optional<StyleOperations> &fromOperationsOptional,
|
|
192
|
-
const std::optional<StyleOperations> &toOperationsOptional) const {
|
|
193
|
-
bool isDiscrete = false;
|
|
194
|
-
|
|
195
|
-
if (fromOperationsOptional.has_value() && toOperationsOptional.has_value()) {
|
|
196
|
-
// Try to create a compatible interpolation pair
|
|
197
|
-
const auto interpolationPair =
|
|
198
|
-
createInterpolationPair(fromOperationsOptional.value(), toOperationsOptional.value());
|
|
199
|
-
|
|
200
|
-
if (interpolationPair.has_value()) {
|
|
201
|
-
const auto [fromOperations, toOperations] = interpolationPair.value();
|
|
202
|
-
return std::make_shared<StyleOperationsKeyframe>(
|
|
203
|
-
StyleOperationsKeyframe{fromOffset, toOffset, fromOperations, toOperations, false});
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// If the operations are not compatible, we need to set the keyframe to discrete
|
|
207
|
-
isDiscrete = true;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
return std::make_shared<StyleOperationsKeyframe>(
|
|
211
|
-
StyleOperationsKeyframe{fromOffset, toOffset, fromOperationsOptional, toOperationsOptional, isDiscrete});
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
size_t OperationsStyleInterpolator::getIndexOfCurrentKeyframe(
|
|
215
|
-
const std::shared_ptr<KeyframeProgressProvider> &progressProvider) const {
|
|
216
|
-
const auto progress = progressProvider->getGlobalProgress();
|
|
217
|
-
|
|
218
|
-
const auto it = std::lower_bound(
|
|
219
|
-
keyframes_.begin(),
|
|
220
|
-
keyframes_.end(),
|
|
221
|
-
progress,
|
|
222
|
-
[](const std::shared_ptr<StyleOperationsKeyframe> &keyframe, double progress) {
|
|
223
|
-
return keyframe->toOffset < progress;
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
// If we're at the end, return the last valid keyframe index
|
|
227
|
-
if (it == keyframes_.end()) {
|
|
228
|
-
return keyframes_.size() - 1;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
return std::distance(keyframes_.begin(), it);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
StyleOperations OperationsStyleInterpolator::getFallbackValue(
|
|
235
|
-
const std::shared_ptr<const ShadowNode> &shadowNode) const {
|
|
236
|
-
const auto &styleValue = getStyleValue(shadowNode);
|
|
237
|
-
return parseStyleOperations(styleValue).value_or(StyleOperations{});
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
folly::dynamic OperationsStyleInterpolator::interpolateOperations(
|
|
241
|
-
const std::shared_ptr<const ShadowNode> &shadowNode,
|
|
242
|
-
const double keyframeProgress,
|
|
243
|
-
const StyleOperations &fromOperations,
|
|
244
|
-
const StyleOperations &toOperations,
|
|
245
|
-
const double fallbackInterpolateThreshold) const {
|
|
246
|
-
auto result = folly::dynamic::array();
|
|
247
|
-
result.reserve(fromOperations.size());
|
|
248
|
-
|
|
249
|
-
const auto updateContext = createUpdateContext(shadowNode, fallbackInterpolateThreshold);
|
|
250
|
-
|
|
251
|
-
for (size_t i = 0; i < fromOperations.size(); ++i) {
|
|
252
|
-
const auto &fromOperation = fromOperations[i];
|
|
253
|
-
const auto &toOperation = toOperations[i];
|
|
254
|
-
|
|
255
|
-
// fromOperation and toOperation have the same type
|
|
256
|
-
const auto &interpolator = interpolators_->at(fromOperation->type);
|
|
257
|
-
const auto interpolationResult =
|
|
258
|
-
interpolator->interpolate(keyframeProgress, fromOperation, toOperation, updateContext);
|
|
259
|
-
result.push_back(interpolationResult->toDynamic());
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
return result;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
folly::dynamic OperationsStyleInterpolator::convertOperationsToDynamic(const StyleOperations &operations) {
|
|
266
|
-
auto result = folly::dynamic::array();
|
|
267
|
-
result.reserve(operations.size());
|
|
268
|
-
|
|
269
|
-
for (const auto &operation : operations) {
|
|
270
|
-
result.push_back(operation->toDynamic());
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
return result;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
StyleOperationsInterpolationContext OperationsStyleInterpolator::createUpdateContext(
|
|
277
|
-
const std::shared_ptr<const ShadowNode> &shadowNode,
|
|
278
|
-
const double fallbackInterpolateThreshold) const {
|
|
279
|
-
return StyleOperationsInterpolationContext{
|
|
280
|
-
shadowNode, viewStylesRepository_, interpolators_, fallbackInterpolateThreshold};
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
// OperationsStyleInterpolatorBase implementation
|
|
284
|
-
|
|
285
|
-
template <typename TOperation>
|
|
286
|
-
std::shared_ptr<StyleOperation> OperationsStyleInterpolatorBase<TOperation>::createStyleOperation(
|
|
287
|
-
jsi::Runtime &rt,
|
|
288
|
-
const jsi::Value &value) const {
|
|
289
|
-
return TOperation::fromJSIValue(rt, value);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
template <typename TOperation>
|
|
293
|
-
std::shared_ptr<StyleOperation> OperationsStyleInterpolatorBase<TOperation>::createStyleOperation(
|
|
294
|
-
const folly::dynamic &value) const {
|
|
295
|
-
return std::static_pointer_cast<StyleOperation>(TOperation::fromDynamic(value));
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
template <typename TOperation>
|
|
299
|
-
std::shared_ptr<TOperation> OperationsStyleInterpolatorBase<TOperation>::getDefaultOperationOfType(
|
|
300
|
-
const size_t type) const {
|
|
301
|
-
return std::static_pointer_cast<TOperation>(interpolators_->at(type)->getDefaultOperation());
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// Explicit template instantiation
|
|
305
|
-
template class OperationsStyleInterpolatorBase<FilterOperation>;
|
|
306
|
-
template class OperationsStyleInterpolatorBase<TransformOperation>;
|
|
307
|
-
|
|
308
|
-
} // namespace reanimated::css
|
|
1
|
+
#include <reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h>
|
|
2
|
+
|
|
3
|
+
#include <reanimated/CSS/interpolation/filters/FilterOperation.h>
|
|
4
|
+
#include <reanimated/CSS/interpolation/transforms/TransformOperation.h>
|
|
5
|
+
|
|
6
|
+
namespace reanimated::css {
|
|
7
|
+
|
|
8
|
+
// OperationsStyleInterpolator implementation
|
|
9
|
+
|
|
10
|
+
OperationsStyleInterpolator::OperationsStyleInterpolator(
|
|
11
|
+
const PropertyPath &propertyPath,
|
|
12
|
+
const std::shared_ptr<StyleOperationInterpolators> &interpolators,
|
|
13
|
+
const std::shared_ptr<ViewStylesRepository> &viewStylesRepository,
|
|
14
|
+
const folly::dynamic &defaultStyleValueDynamic)
|
|
15
|
+
: PropertyInterpolator(propertyPath, viewStylesRepository),
|
|
16
|
+
interpolators_(interpolators),
|
|
17
|
+
defaultStyleValueDynamic_(defaultStyleValueDynamic) {}
|
|
18
|
+
|
|
19
|
+
folly::dynamic OperationsStyleInterpolator::getStyleValue(const std::shared_ptr<const ShadowNode> &shadowNode) const {
|
|
20
|
+
return viewStylesRepository_->getStyleProp(shadowNode->getTag(), propertyPath_);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
folly::dynamic OperationsStyleInterpolator::getResetStyle(const std::shared_ptr<const ShadowNode> &shadowNode) const {
|
|
24
|
+
auto styleValue = getStyleValue(shadowNode);
|
|
25
|
+
|
|
26
|
+
if (!styleValue.isArray()) {
|
|
27
|
+
return defaultStyleValueDynamic_;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return styleValue;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
folly::dynamic OperationsStyleInterpolator::getFirstKeyframeValue() const {
|
|
34
|
+
const auto &fromOperations = keyframes_.front()->fromOperations;
|
|
35
|
+
return fromOperations.has_value() ? convertOperationsToDynamic(fromOperations.value()) : defaultStyleValueDynamic_;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
folly::dynamic OperationsStyleInterpolator::getLastKeyframeValue() const {
|
|
39
|
+
const auto &toOperations = keyframes_.back()->toOperations;
|
|
40
|
+
return toOperations.has_value() ? convertOperationsToDynamic(toOperations.value()) : defaultStyleValueDynamic_;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
bool OperationsStyleInterpolator::equalsReversingAdjustedStartValue(const folly::dynamic &propertyValue) const {
|
|
44
|
+
const auto propertyOperations = parseStyleOperations(propertyValue);
|
|
45
|
+
|
|
46
|
+
if (!reversingAdjustedStartValue_.has_value()) {
|
|
47
|
+
return !propertyOperations.has_value();
|
|
48
|
+
} else if (!propertyOperations.has_value()) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const auto &reversingAdjustedOperationsValue = reversingAdjustedStartValue_.value();
|
|
53
|
+
const auto &propertyOperationsValue = propertyOperations.value();
|
|
54
|
+
|
|
55
|
+
if (reversingAdjustedOperationsValue.size() != propertyOperationsValue.size()) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
for (size_t i = 0; i < reversingAdjustedOperationsValue.size(); ++i) {
|
|
60
|
+
if (*reversingAdjustedOperationsValue[i] != *propertyOperationsValue[i]) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
folly::dynamic OperationsStyleInterpolator::interpolate(
|
|
69
|
+
const std::shared_ptr<const ShadowNode> &shadowNode,
|
|
70
|
+
const std::shared_ptr<KeyframeProgressProvider> &progressProvider,
|
|
71
|
+
const double fallbackInterpolateThreshold) const {
|
|
72
|
+
const auto currentIndex = getIndexOfCurrentKeyframe(progressProvider);
|
|
73
|
+
|
|
74
|
+
// Get or create the current keyframe
|
|
75
|
+
auto keyframe = keyframes_[currentIndex];
|
|
76
|
+
if (!keyframe->fromOperations.has_value() || !keyframe->toOperations.has_value()) {
|
|
77
|
+
// If the value is nullopt, we would have to read it from the view style
|
|
78
|
+
// and build the keyframe again
|
|
79
|
+
const auto fallbackValue = getFallbackValue(shadowNode);
|
|
80
|
+
keyframe = createStyleOperationsKeyframe(
|
|
81
|
+
keyframe->fromOffset,
|
|
82
|
+
keyframe->toOffset,
|
|
83
|
+
keyframe->fromOperations.value_or(fallbackValue),
|
|
84
|
+
keyframe->toOperations.value_or(fallbackValue));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
double progress = progressProvider->getKeyframeProgress(keyframe->fromOffset, keyframe->toOffset);
|
|
88
|
+
|
|
89
|
+
if (keyframe->isDiscrete) {
|
|
90
|
+
const auto &operations =
|
|
91
|
+
progress < fallbackInterpolateThreshold ? keyframe->fromOperations.value() : keyframe->toOperations.value();
|
|
92
|
+
return convertOperationsToDynamic(operations);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Interpolate the current keyframe
|
|
96
|
+
return interpolateOperations(
|
|
97
|
+
shadowNode,
|
|
98
|
+
progress,
|
|
99
|
+
keyframe->fromOperations.value(),
|
|
100
|
+
keyframe->toOperations.value(),
|
|
101
|
+
fallbackInterpolateThreshold);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
void OperationsStyleInterpolator::updateKeyframes(jsi::Runtime &rt, const jsi::Value &keyframes) {
|
|
105
|
+
// Step 1: Parse keyframes
|
|
106
|
+
const auto parsedKeyframes = parseJSIKeyframes(rt, keyframes);
|
|
107
|
+
|
|
108
|
+
// Step 2: Convert keyframes to StyleOperations
|
|
109
|
+
std::vector<std::pair<double, std::optional<StyleOperations>>> operations;
|
|
110
|
+
operations.reserve(parsedKeyframes.size());
|
|
111
|
+
for (const auto &[offset, value] : parsedKeyframes) {
|
|
112
|
+
operations.emplace_back(offset, parseStyleOperations(rt, value));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Step 3: Prepare keyframe interpolation pairs (convert keyframe values in
|
|
116
|
+
// both keyframes to the same type)
|
|
117
|
+
// There will be one less keyframe than the number of keyframes in the jsi
|
|
118
|
+
// array as we create interpolation pairs
|
|
119
|
+
const auto keyframesCount = operations.size() - 1;
|
|
120
|
+
keyframes_.clear();
|
|
121
|
+
keyframes_.reserve(keyframesCount);
|
|
122
|
+
|
|
123
|
+
for (size_t i = 0; i < keyframesCount; ++i) {
|
|
124
|
+
keyframes_.push_back(createStyleOperationsKeyframe(
|
|
125
|
+
operations[i].first, operations[i + 1].first, operations[i].second, operations[i + 1].second));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
void OperationsStyleInterpolator::updateKeyframesFromStyleChange(
|
|
130
|
+
const folly::dynamic &oldStyleValue,
|
|
131
|
+
const folly::dynamic &newStyleValue,
|
|
132
|
+
const folly::dynamic &lastUpdateValue) {
|
|
133
|
+
if (oldStyleValue.isNull()) {
|
|
134
|
+
reversingAdjustedStartValue_ = std::nullopt;
|
|
135
|
+
} else {
|
|
136
|
+
reversingAdjustedStartValue_ = parseStyleOperations(oldStyleValue);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const auto &prevStyleValue = lastUpdateValue.isNull() ? oldStyleValue : lastUpdateValue;
|
|
140
|
+
|
|
141
|
+
keyframes_.clear();
|
|
142
|
+
keyframes_.reserve(1);
|
|
143
|
+
keyframes_.emplace_back(createStyleOperationsKeyframe(
|
|
144
|
+
0,
|
|
145
|
+
1,
|
|
146
|
+
parseStyleOperations(prevStyleValue).value_or(StyleOperations{}),
|
|
147
|
+
parseStyleOperations(newStyleValue).value_or(StyleOperations{})));
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
std::optional<StyleOperations> OperationsStyleInterpolator::parseStyleOperations(
|
|
151
|
+
jsi::Runtime &rt,
|
|
152
|
+
const jsi::Value &values) const {
|
|
153
|
+
if (values.isUndefined()) {
|
|
154
|
+
return std::nullopt;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const auto operationsArray = values.asObject(rt).asArray(rt);
|
|
158
|
+
const auto operationsCount = operationsArray.size(rt);
|
|
159
|
+
|
|
160
|
+
StyleOperations styleOperations;
|
|
161
|
+
styleOperations.reserve(operationsCount);
|
|
162
|
+
|
|
163
|
+
for (size_t i = 0; i < operationsCount; ++i) {
|
|
164
|
+
styleOperations.emplace_back(createStyleOperation(rt, operationsArray.getValueAtIndex(rt, i)));
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return styleOperations;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
std::optional<StyleOperations> OperationsStyleInterpolator::parseStyleOperations(const folly::dynamic &values) const {
|
|
171
|
+
if (values.empty()) {
|
|
172
|
+
return std::nullopt;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const auto &operationsArray = values;
|
|
176
|
+
const auto operationsCount = operationsArray.size();
|
|
177
|
+
|
|
178
|
+
StyleOperations styleOperations;
|
|
179
|
+
styleOperations.reserve(operationsCount);
|
|
180
|
+
|
|
181
|
+
for (size_t i = 0; i < operationsCount; ++i) {
|
|
182
|
+
styleOperations.emplace_back(createStyleOperation(operationsArray[i]));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return styleOperations;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
std::shared_ptr<StyleOperationsKeyframe> OperationsStyleInterpolator::createStyleOperationsKeyframe(
|
|
189
|
+
const double fromOffset,
|
|
190
|
+
const double toOffset,
|
|
191
|
+
const std::optional<StyleOperations> &fromOperationsOptional,
|
|
192
|
+
const std::optional<StyleOperations> &toOperationsOptional) const {
|
|
193
|
+
bool isDiscrete = false;
|
|
194
|
+
|
|
195
|
+
if (fromOperationsOptional.has_value() && toOperationsOptional.has_value()) {
|
|
196
|
+
// Try to create a compatible interpolation pair
|
|
197
|
+
const auto interpolationPair =
|
|
198
|
+
createInterpolationPair(fromOperationsOptional.value(), toOperationsOptional.value());
|
|
199
|
+
|
|
200
|
+
if (interpolationPair.has_value()) {
|
|
201
|
+
const auto [fromOperations, toOperations] = interpolationPair.value();
|
|
202
|
+
return std::make_shared<StyleOperationsKeyframe>(
|
|
203
|
+
StyleOperationsKeyframe{fromOffset, toOffset, fromOperations, toOperations, false});
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// If the operations are not compatible, we need to set the keyframe to discrete
|
|
207
|
+
isDiscrete = true;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return std::make_shared<StyleOperationsKeyframe>(
|
|
211
|
+
StyleOperationsKeyframe{fromOffset, toOffset, fromOperationsOptional, toOperationsOptional, isDiscrete});
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
size_t OperationsStyleInterpolator::getIndexOfCurrentKeyframe(
|
|
215
|
+
const std::shared_ptr<KeyframeProgressProvider> &progressProvider) const {
|
|
216
|
+
const auto progress = progressProvider->getGlobalProgress();
|
|
217
|
+
|
|
218
|
+
const auto it = std::lower_bound(
|
|
219
|
+
keyframes_.begin(),
|
|
220
|
+
keyframes_.end(),
|
|
221
|
+
progress,
|
|
222
|
+
[](const std::shared_ptr<StyleOperationsKeyframe> &keyframe, double progress) {
|
|
223
|
+
return keyframe->toOffset < progress;
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
// If we're at the end, return the last valid keyframe index
|
|
227
|
+
if (it == keyframes_.end()) {
|
|
228
|
+
return keyframes_.size() - 1;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return std::distance(keyframes_.begin(), it);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
StyleOperations OperationsStyleInterpolator::getFallbackValue(
|
|
235
|
+
const std::shared_ptr<const ShadowNode> &shadowNode) const {
|
|
236
|
+
const auto &styleValue = getStyleValue(shadowNode);
|
|
237
|
+
return parseStyleOperations(styleValue).value_or(StyleOperations{});
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
folly::dynamic OperationsStyleInterpolator::interpolateOperations(
|
|
241
|
+
const std::shared_ptr<const ShadowNode> &shadowNode,
|
|
242
|
+
const double keyframeProgress,
|
|
243
|
+
const StyleOperations &fromOperations,
|
|
244
|
+
const StyleOperations &toOperations,
|
|
245
|
+
const double fallbackInterpolateThreshold) const {
|
|
246
|
+
auto result = folly::dynamic::array();
|
|
247
|
+
result.reserve(fromOperations.size());
|
|
248
|
+
|
|
249
|
+
const auto updateContext = createUpdateContext(shadowNode, fallbackInterpolateThreshold);
|
|
250
|
+
|
|
251
|
+
for (size_t i = 0; i < fromOperations.size(); ++i) {
|
|
252
|
+
const auto &fromOperation = fromOperations[i];
|
|
253
|
+
const auto &toOperation = toOperations[i];
|
|
254
|
+
|
|
255
|
+
// fromOperation and toOperation have the same type
|
|
256
|
+
const auto &interpolator = interpolators_->at(fromOperation->type);
|
|
257
|
+
const auto interpolationResult =
|
|
258
|
+
interpolator->interpolate(keyframeProgress, fromOperation, toOperation, updateContext);
|
|
259
|
+
result.push_back(interpolationResult->toDynamic());
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return result;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
folly::dynamic OperationsStyleInterpolator::convertOperationsToDynamic(const StyleOperations &operations) {
|
|
266
|
+
auto result = folly::dynamic::array();
|
|
267
|
+
result.reserve(operations.size());
|
|
268
|
+
|
|
269
|
+
for (const auto &operation : operations) {
|
|
270
|
+
result.push_back(operation->toDynamic());
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return result;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
StyleOperationsInterpolationContext OperationsStyleInterpolator::createUpdateContext(
|
|
277
|
+
const std::shared_ptr<const ShadowNode> &shadowNode,
|
|
278
|
+
const double fallbackInterpolateThreshold) const {
|
|
279
|
+
return StyleOperationsInterpolationContext{
|
|
280
|
+
shadowNode, viewStylesRepository_, interpolators_, fallbackInterpolateThreshold};
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// OperationsStyleInterpolatorBase implementation
|
|
284
|
+
|
|
285
|
+
template <typename TOperation>
|
|
286
|
+
std::shared_ptr<StyleOperation> OperationsStyleInterpolatorBase<TOperation>::createStyleOperation(
|
|
287
|
+
jsi::Runtime &rt,
|
|
288
|
+
const jsi::Value &value) const {
|
|
289
|
+
return TOperation::fromJSIValue(rt, value);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
template <typename TOperation>
|
|
293
|
+
std::shared_ptr<StyleOperation> OperationsStyleInterpolatorBase<TOperation>::createStyleOperation(
|
|
294
|
+
const folly::dynamic &value) const {
|
|
295
|
+
return std::static_pointer_cast<StyleOperation>(TOperation::fromDynamic(value));
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
template <typename TOperation>
|
|
299
|
+
std::shared_ptr<TOperation> OperationsStyleInterpolatorBase<TOperation>::getDefaultOperationOfType(
|
|
300
|
+
const size_t type) const {
|
|
301
|
+
return std::static_pointer_cast<TOperation>(interpolators_->at(type)->getDefaultOperation());
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// Explicit template instantiation
|
|
305
|
+
template class OperationsStyleInterpolatorBase<FilterOperation>;
|
|
306
|
+
template class OperationsStyleInterpolatorBase<TransformOperation>;
|
|
307
|
+
|
|
308
|
+
} // namespace reanimated::css
|