@react-native-ohos/react-native-reanimated 3.18.1-rc.6 → 4.0.0-rc.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 -0
- package/harmony/reanimated/BuildProfile.ets +1 -1
- package/harmony/reanimated/build-profile.json5 +8 -1
- package/harmony/reanimated/oh-package.json5 +3 -2
- package/harmony/reanimated/src/main/cpp/CMakeLists.txt +31 -40
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +11 -16
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +3 -4
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +93 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +44 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +110 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +51 -39
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +13 -15
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +0 -3
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +22 -53
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +12 -8
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +46 -37
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +3 -10
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +4 -2
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +62 -157
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +38 -46
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/{LayoutAnimationsProxy.cpp → LayoutAnimationsProxy_Legacy.cpp} +303 -276
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +5 -65
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +52 -82
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +957 -552
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +87 -111
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +115 -163
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +38 -54
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +34 -36
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +8 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +46 -58
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +5 -9
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +26 -57
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +12 -33
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/{worklets → reanimated}/Tools/ReanimatedVersion.h +3 -4
- package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +60 -85
- package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +1 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +0 -3
- package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +266 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +36 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +3 -3
- package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +12 -1
- package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +1 -4
- package/harmony/reanimated.har +0 -0
- package/package.json +36 -18
- package/scripts/deploy.js +191 -0
- package/scripts/set-reanimated-version.js +37 -0
- package/scripts/update-version.js +119 -0
- package/scripts/validate-react-native-version.js +46 -0
- package/scripts/validate-worklets-build.js +17 -0
- package/scripts/validate-worklets-version.js +79 -0
- package/scripts/worklets-version.json +4 -0
- package/LICENSE +0 -21
- package/README.OpenSource +0 -11
- package/README.md +0 -10
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -155
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -182
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
- package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
- package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
- package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
- package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
- package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
- package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
- package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#include <reanimated/CSS/svg/values/SVGStrokeDashArray.h>
|
|
2
|
+
|
|
3
|
+
#include <string>
|
|
4
|
+
#include <vector>
|
|
5
|
+
|
|
6
|
+
namespace reanimated::css {
|
|
7
|
+
|
|
8
|
+
SVGStrokeDashArray::SVGStrokeDashArray() : values() {}
|
|
9
|
+
|
|
10
|
+
SVGStrokeDashArray::SVGStrokeDashArray(const std::vector<SVGLength> &values) : values(values) {}
|
|
11
|
+
|
|
12
|
+
SVGStrokeDashArray::SVGStrokeDashArray(jsi::Runtime &rt, const jsi::Value &jsiValue) {
|
|
13
|
+
const auto &array = jsiValue.asObject(rt).asArray(rt);
|
|
14
|
+
const auto arraySize = array.size(rt);
|
|
15
|
+
values.reserve(arraySize);
|
|
16
|
+
for (size_t i = 0; i < arraySize; ++i) {
|
|
17
|
+
values.emplace_back(rt, array.getValueAtIndex(rt, i));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
SVGStrokeDashArray::SVGStrokeDashArray(const folly::dynamic &value) {
|
|
22
|
+
for (const auto &value : value) {
|
|
23
|
+
values.emplace_back(value);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
bool SVGStrokeDashArray::canConstruct(jsi::Runtime &rt, const jsi::Value &jsiValue) {
|
|
28
|
+
if (!jsiValue.isObject() || !jsiValue.asObject(rt).isArray(rt)) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const auto &array = jsiValue.asObject(rt).asArray(rt);
|
|
32
|
+
for (size_t i = 0; i < array.size(rt); ++i) {
|
|
33
|
+
if (!SVGLength::canConstruct(rt, array.getValueAtIndex(rt, i))) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
bool SVGStrokeDashArray::canConstruct(const folly::dynamic &value) {
|
|
41
|
+
return value.isArray() &&
|
|
42
|
+
std::all_of(value.begin(), value.end(), [](const auto &value) { return SVGLength::canConstruct(value); });
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
folly::dynamic SVGStrokeDashArray::toDynamic() const {
|
|
46
|
+
folly::dynamic array = folly::dynamic::array;
|
|
47
|
+
array.reserve(values.size());
|
|
48
|
+
for (const auto &value : values) {
|
|
49
|
+
array.push_back(value.toDynamic());
|
|
50
|
+
}
|
|
51
|
+
return array;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
std::string SVGStrokeDashArray::toString() const {
|
|
55
|
+
std::stringstream ss;
|
|
56
|
+
ss << "{";
|
|
57
|
+
for (const auto &value : values) {
|
|
58
|
+
ss << value.toString();
|
|
59
|
+
if (&value != &values.back()) {
|
|
60
|
+
ss << ", ";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
ss << "}";
|
|
64
|
+
return ss.str();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
SVGStrokeDashArray SVGStrokeDashArray::interpolate(double progress, const SVGStrokeDashArray &to) const {
|
|
68
|
+
std::vector<SVGLength> result;
|
|
69
|
+
auto fromValues = values;
|
|
70
|
+
auto toValues = to.values;
|
|
71
|
+
|
|
72
|
+
// If one of the arrays is empty, we take the fist value from the second
|
|
73
|
+
// one and put it as the only element of the first (empty) array
|
|
74
|
+
// (this is how it works on the web)
|
|
75
|
+
if (fromValues.size() == 0 && toValues.size() > 0) {
|
|
76
|
+
fromValues = {toValues[0]};
|
|
77
|
+
}
|
|
78
|
+
if (toValues.size() == 0 && fromValues.size() > 0) {
|
|
79
|
+
toValues = {fromValues[0]};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const auto fromSize = fromValues.size();
|
|
83
|
+
const auto toSize = toValues.size();
|
|
84
|
+
|
|
85
|
+
// We need to find the least common multiple of the two arrays to get
|
|
86
|
+
// a smooth interpolation of the dash array pattern
|
|
87
|
+
const auto resultSize = std::lcm(fromSize, toSize);
|
|
88
|
+
result.reserve(resultSize);
|
|
89
|
+
|
|
90
|
+
for (size_t i = 0; i < resultSize; i++) {
|
|
91
|
+
result.emplace_back(fromValues[i % fromSize].interpolate(progress, toValues[i % toSize]));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return SVGStrokeDashArray(result);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
bool SVGStrokeDashArray::operator==(const SVGStrokeDashArray &other) const {
|
|
98
|
+
return values == other.values;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
#ifndef NDEBUG
|
|
102
|
+
|
|
103
|
+
std::ostream &operator<<(std::ostream &os, const SVGStrokeDashArray &strokeDashArray) {
|
|
104
|
+
os << "SVGStrokeDashArray(" << strokeDashArray.toString() << ")";
|
|
105
|
+
return os;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
#endif // NDEBUG
|
|
109
|
+
|
|
110
|
+
} // namespace reanimated::css
|
package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <reanimated/CSS/svg/values/SVGLength.h>
|
|
4
|
+
|
|
5
|
+
#include <numeric>
|
|
6
|
+
#include <string>
|
|
7
|
+
#include <vector>
|
|
8
|
+
|
|
9
|
+
namespace reanimated::css {
|
|
10
|
+
|
|
11
|
+
struct SVGStrokeDashArray : public CSSSimpleValue<SVGStrokeDashArray> {
|
|
12
|
+
std::vector<SVGLength> values;
|
|
13
|
+
|
|
14
|
+
SVGStrokeDashArray();
|
|
15
|
+
explicit SVGStrokeDashArray(const std::vector<SVGLength> &values);
|
|
16
|
+
explicit SVGStrokeDashArray(jsi::Runtime &rt, const jsi::Value &jsiValue);
|
|
17
|
+
explicit SVGStrokeDashArray(const folly::dynamic &value);
|
|
18
|
+
|
|
19
|
+
static bool canConstruct(jsi::Runtime &rt, const jsi::Value &jsiValue);
|
|
20
|
+
static bool canConstruct(const folly::dynamic &value);
|
|
21
|
+
|
|
22
|
+
folly::dynamic toDynamic() const override;
|
|
23
|
+
std::string toString() const override;
|
|
24
|
+
SVGStrokeDashArray interpolate(double progress, const SVGStrokeDashArray &to) const override;
|
|
25
|
+
|
|
26
|
+
bool operator==(const SVGStrokeDashArray &other) const;
|
|
27
|
+
|
|
28
|
+
#ifndef NDEBUG
|
|
29
|
+
friend std::ostream &operator<<(std::ostream &os, const SVGStrokeDashArray &strokeDashArray);
|
|
30
|
+
#endif // NDEBUG
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
} // namespace reanimated::css
|
package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#include <reanimated/CSS/utils/DelayedItemsManager.h>
|
|
2
|
+
|
|
3
|
+
#include <functional>
|
|
4
|
+
#include <utility>
|
|
5
|
+
|
|
6
|
+
namespace reanimated::css {
|
|
7
|
+
|
|
8
|
+
template <typename TValue>
|
|
9
|
+
DelayedItem<TValue>::DelayedItem(double timestamp, TValue value) : timestamp(timestamp), value(std::move(value)) {}
|
|
10
|
+
|
|
11
|
+
template <typename TValue>
|
|
12
|
+
bool DelayedItemComparator<TValue>::operator()(const DelayedItem<TValue> &lhs, const DelayedItem<TValue> &rhs) const {
|
|
13
|
+
if (lhs.timestamp == rhs.timestamp) {
|
|
14
|
+
// Use address comparison as a tiebreaker when timestamps are equal
|
|
15
|
+
return std::less<const TValue *>{}(&lhs.value, &rhs.value);
|
|
16
|
+
}
|
|
17
|
+
return lhs.timestamp < rhs.timestamp;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
template <typename TValue>
|
|
21
|
+
void DelayedItemsManager<TValue>::add(const double timestamp, const TValue value) {
|
|
22
|
+
auto result = itemsSet_.emplace(timestamp, value);
|
|
23
|
+
if (result.second) {
|
|
24
|
+
itemsMap_[result.first->value] = result.first;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
template <typename TValue>
|
|
29
|
+
typename DelayedItemsManager<TValue>::Item DelayedItemsManager<TValue>::pop() {
|
|
30
|
+
if (itemsSet_.empty()) {
|
|
31
|
+
throw std::runtime_error("[Reanimated] No delayed items available to pop");
|
|
32
|
+
}
|
|
33
|
+
auto it = itemsSet_.begin();
|
|
34
|
+
Item result = std::move(*it);
|
|
35
|
+
itemsMap_.erase(it->value);
|
|
36
|
+
itemsSet_.erase(it);
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
template <typename TValue>
|
|
41
|
+
bool DelayedItemsManager<TValue>::remove(const TValue value) {
|
|
42
|
+
auto it = itemsMap_.find(value);
|
|
43
|
+
|
|
44
|
+
if (it == itemsMap_.end()) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
itemsSet_.erase(it->second);
|
|
49
|
+
itemsMap_.erase(it);
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
template <typename TValue>
|
|
54
|
+
const typename DelayedItemsManager<TValue>::Item &DelayedItemsManager<TValue>::top() const {
|
|
55
|
+
if (itemsSet_.empty()) {
|
|
56
|
+
throw std::runtime_error("[Reanimated] No delayed items available");
|
|
57
|
+
}
|
|
58
|
+
return *itemsSet_.begin();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
template <typename TValue>
|
|
62
|
+
bool DelayedItemsManager<TValue>::empty() const {
|
|
63
|
+
return itemsSet_.empty();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
template <typename TValue>
|
|
67
|
+
size_t DelayedItemsManager<TValue>::size() const {
|
|
68
|
+
return itemsSet_.size();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Declare the types that will be used in the DelayedItemsManager class
|
|
72
|
+
template class DelayedItemsManager<std::shared_ptr<CSSAnimation>>;
|
|
73
|
+
template class DelayedItemsManager<Tag>;
|
|
74
|
+
|
|
75
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <reanimated/CSS/core/CSSAnimation.h>
|
|
4
|
+
|
|
5
|
+
#include <functional>
|
|
6
|
+
#include <memory>
|
|
7
|
+
#include <set>
|
|
8
|
+
#include <stdexcept>
|
|
9
|
+
#include <unordered_map>
|
|
10
|
+
#include <utility>
|
|
11
|
+
|
|
12
|
+
namespace reanimated::css {
|
|
13
|
+
|
|
14
|
+
template <typename TValue>
|
|
15
|
+
struct DelayedItem {
|
|
16
|
+
const double timestamp;
|
|
17
|
+
const TValue value;
|
|
18
|
+
|
|
19
|
+
DelayedItem(double timestamp, TValue value);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
template <typename TValue>
|
|
23
|
+
struct DelayedItemComparator {
|
|
24
|
+
bool operator()(const DelayedItem<TValue> &lhs, const DelayedItem<TValue> &rhs) const;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
template <typename TValue>
|
|
28
|
+
class DelayedItemsManager {
|
|
29
|
+
using Item = DelayedItem<TValue>;
|
|
30
|
+
using ItemSet = std::set<Item, DelayedItemComparator<TValue>>;
|
|
31
|
+
using ItemMap = std::unordered_map<TValue, typename ItemSet::iterator>;
|
|
32
|
+
|
|
33
|
+
ItemSet itemsSet_;
|
|
34
|
+
ItemMap itemsMap_;
|
|
35
|
+
|
|
36
|
+
public:
|
|
37
|
+
void add(double timestamp, TValue value);
|
|
38
|
+
Item pop();
|
|
39
|
+
bool remove(TValue value);
|
|
40
|
+
const Item &top() const;
|
|
41
|
+
bool empty() const;
|
|
42
|
+
size_t size() const;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#include <reanimated/CSS/utils/algorithms.h>
|
|
2
|
+
|
|
3
|
+
#include <vector>
|
|
4
|
+
|
|
5
|
+
namespace reanimated::css {
|
|
6
|
+
|
|
7
|
+
size_t firstSmallerOrEqual(const double x, const std::vector<double> &arr) {
|
|
8
|
+
auto it = std::upper_bound(arr.begin(), arr.end(), x);
|
|
9
|
+
return it == arr.begin() ? 0 : std::distance(arr.begin(), --it);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#include <reanimated/CSS/utils/interpolators.h>
|
|
2
|
+
|
|
3
|
+
#include <memory>
|
|
4
|
+
#include <string>
|
|
5
|
+
|
|
6
|
+
namespace reanimated::css {
|
|
7
|
+
|
|
8
|
+
std::shared_ptr<PropertyInterpolator> createPropertyInterpolator(
|
|
9
|
+
const std::string &propertyName,
|
|
10
|
+
const PropertyPath &propertyPath,
|
|
11
|
+
const InterpolatorFactoriesRecord &factories,
|
|
12
|
+
const std::shared_ptr<ViewStylesRepository> &viewStylesRepository) {
|
|
13
|
+
auto it = factories.find(propertyName);
|
|
14
|
+
|
|
15
|
+
if (it == factories.cend()) {
|
|
16
|
+
throw std::invalid_argument("[Reanimated] No interpolator factory found for property: " + propertyName);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
PropertyPath newPath = propertyPath;
|
|
20
|
+
newPath.emplace_back(propertyName);
|
|
21
|
+
|
|
22
|
+
return it->second->create(newPath, viewStylesRepository);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
std::shared_ptr<PropertyInterpolator> createPropertyInterpolator(
|
|
26
|
+
size_t arrayIndex,
|
|
27
|
+
const PropertyPath &propertyPath,
|
|
28
|
+
const InterpolatorFactoriesArray &factories,
|
|
29
|
+
const std::shared_ptr<ViewStylesRepository> &viewStylesRepository) {
|
|
30
|
+
PropertyPath newPath = propertyPath;
|
|
31
|
+
newPath.emplace_back(std::to_string(arrayIndex));
|
|
32
|
+
|
|
33
|
+
return factories[arrayIndex % factories.size()]->create(newPath, viewStylesRepository);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <reanimated/CSS/interpolation/PropertyInterpolator.h>
|
|
4
|
+
|
|
5
|
+
#include <memory>
|
|
6
|
+
#include <string>
|
|
7
|
+
#include <vector>
|
|
8
|
+
|
|
9
|
+
namespace reanimated::css {
|
|
10
|
+
|
|
11
|
+
std::shared_ptr<PropertyInterpolator> createPropertyInterpolator(
|
|
12
|
+
const std::string &propertyName,
|
|
13
|
+
const PropertyPath &propertyPath,
|
|
14
|
+
const InterpolatorFactoriesRecord &factories,
|
|
15
|
+
const std::shared_ptr<ViewStylesRepository> &viewStylesRepository);
|
|
16
|
+
|
|
17
|
+
std::shared_ptr<PropertyInterpolator> createPropertyInterpolator(
|
|
18
|
+
size_t arrayIndex,
|
|
19
|
+
const PropertyPath &propertyPath,
|
|
20
|
+
const InterpolatorFactoriesArray &factories,
|
|
21
|
+
const std::shared_ptr<ViewStylesRepository> &viewStylesRepository);
|
|
22
|
+
|
|
23
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#include <reanimated/CSS/utils/props.h>
|
|
2
|
+
|
|
3
|
+
#include <string>
|
|
4
|
+
#include <utility>
|
|
5
|
+
|
|
6
|
+
namespace reanimated::css {
|
|
7
|
+
|
|
8
|
+
bool isDiscreteProperty(const std::string &propName, const std::string &componentName) {
|
|
9
|
+
const auto &interpolators = getComponentInterpolators(componentName);
|
|
10
|
+
const auto it = interpolators.find(propName);
|
|
11
|
+
if (it == interpolators.end()) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
return it->second->isDiscreteProperty();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
bool areArraysDifferentRecursive(const folly::dynamic &oldArray, const folly::dynamic &newArray) {
|
|
18
|
+
if (oldArray.size() != newArray.size()) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
for (size_t i = 0; i < oldArray.size(); i++) {
|
|
23
|
+
const auto [oldChangedProp, newChangedProp] = getChangedPropsRecursive(oldArray[i], newArray[i]);
|
|
24
|
+
|
|
25
|
+
if (!oldChangedProp.isNull() || !newChangedProp.isNull()) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
std::pair<folly::dynamic, folly::dynamic> getChangedPropsRecursive(
|
|
34
|
+
const folly::dynamic &oldProp,
|
|
35
|
+
const folly::dynamic &newProp) {
|
|
36
|
+
if (!oldProp.isObject() || !newProp.isObject()) {
|
|
37
|
+
// Primitive values comparison
|
|
38
|
+
if (oldProp != newProp) {
|
|
39
|
+
return {oldProp, newProp};
|
|
40
|
+
}
|
|
41
|
+
return {folly::dynamic(), folly::dynamic()};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (oldProp.isArray() && newProp.isArray()) {
|
|
45
|
+
// Arrays comparison
|
|
46
|
+
if (areArraysDifferentRecursive(oldProp, newProp)) {
|
|
47
|
+
return {oldProp, newProp};
|
|
48
|
+
}
|
|
49
|
+
return {folly::dynamic(), folly::dynamic()};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
folly::dynamic oldResult = folly::dynamic::object;
|
|
53
|
+
folly::dynamic newResult = folly::dynamic::object;
|
|
54
|
+
bool oldHasChanges = false;
|
|
55
|
+
bool newHasChanges = false;
|
|
56
|
+
|
|
57
|
+
// Check for removed properties
|
|
58
|
+
for (const auto &item : oldProp.items()) {
|
|
59
|
+
const auto &propName = item.first.asString();
|
|
60
|
+
if (!newProp.count(propName)) {
|
|
61
|
+
const auto &oldValue = item.second;
|
|
62
|
+
oldResult[propName] = oldValue;
|
|
63
|
+
oldHasChanges = true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Check for new and changed properties
|
|
68
|
+
for (const auto &item : newProp.items()) {
|
|
69
|
+
const auto &propName = item.first.asString();
|
|
70
|
+
const auto &newValue = item.second;
|
|
71
|
+
|
|
72
|
+
if (oldProp.count(propName)) {
|
|
73
|
+
const auto &oldValue = oldProp[propName];
|
|
74
|
+
auto [oldChangedProp, newChangedProp] = getChangedPropsRecursive(oldValue, newValue);
|
|
75
|
+
|
|
76
|
+
if (!oldChangedProp.isNull() && !newChangedProp.isNull()) {
|
|
77
|
+
oldResult[propName] = std::move(oldChangedProp);
|
|
78
|
+
newResult[propName] = std::move(newChangedProp);
|
|
79
|
+
oldHasChanges = true;
|
|
80
|
+
newHasChanges = true;
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
newResult[propName] = newValue;
|
|
84
|
+
newHasChanges = true;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
oldHasChanges ? std::move(oldResult) : folly::dynamic(), newHasChanges ? std::move(newResult) : folly::dynamic()};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
std::pair<folly::dynamic, folly::dynamic>
|
|
93
|
+
getChangedValueForProp(const folly::dynamic &oldObject, const folly::dynamic &newObject, const std::string &propName) {
|
|
94
|
+
const bool oldHasProperty = oldObject.count(propName);
|
|
95
|
+
const bool newHasProperty = newObject.count(propName);
|
|
96
|
+
|
|
97
|
+
if (oldHasProperty && newHasProperty) {
|
|
98
|
+
const auto &oldVal = oldObject[propName];
|
|
99
|
+
const auto &newVal = newObject[propName];
|
|
100
|
+
|
|
101
|
+
if (oldVal.isObject() && newVal.isObject()) {
|
|
102
|
+
return getChangedPropsRecursive(oldVal, newVal);
|
|
103
|
+
} else if (oldVal != newVal) {
|
|
104
|
+
return {oldVal, newVal};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return {folly::dynamic(), folly::dynamic()};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (oldHasProperty) {
|
|
111
|
+
const auto &oldVal = oldObject[propName];
|
|
112
|
+
return {oldVal, folly::dynamic()};
|
|
113
|
+
} else if (newHasProperty) {
|
|
114
|
+
const auto &newVal = newObject[propName];
|
|
115
|
+
return {folly::dynamic(), newVal};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return {folly::dynamic(), folly::dynamic()};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
ChangedProps getChangedProps(
|
|
122
|
+
const folly::dynamic &oldProps,
|
|
123
|
+
const folly::dynamic &newProps,
|
|
124
|
+
const PropertyNames &allowedProperties) {
|
|
125
|
+
folly::dynamic oldResult = folly::dynamic::object;
|
|
126
|
+
folly::dynamic newResult = folly::dynamic::object;
|
|
127
|
+
PropertyNames changedPropertyNames;
|
|
128
|
+
|
|
129
|
+
for (const auto &propName : allowedProperties) {
|
|
130
|
+
auto [oldChangedProp, newChangedProp] = getChangedValueForProp(oldProps, newProps, propName);
|
|
131
|
+
|
|
132
|
+
const auto hasOldChangedProp = !oldChangedProp.isNull();
|
|
133
|
+
const auto hasNewChangedProp = !newChangedProp.isNull();
|
|
134
|
+
|
|
135
|
+
if (hasOldChangedProp) {
|
|
136
|
+
oldResult[propName] = std::move(oldChangedProp);
|
|
137
|
+
}
|
|
138
|
+
if (hasNewChangedProp) {
|
|
139
|
+
newResult[propName] = std::move(newChangedProp);
|
|
140
|
+
}
|
|
141
|
+
if (hasOldChangedProp || hasNewChangedProp) {
|
|
142
|
+
changedPropertyNames.push_back(propName);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return {std::move(oldResult), std::move(newResult), std::move(changedPropertyNames)};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <reanimated/CSS/InterpolatorRegistry.h>
|
|
4
|
+
#include <reanimated/CSS/common/definitions.h>
|
|
5
|
+
|
|
6
|
+
#include <memory>
|
|
7
|
+
#include <string>
|
|
8
|
+
#include <unordered_map>
|
|
9
|
+
#include <unordered_set>
|
|
10
|
+
#include <utility>
|
|
11
|
+
|
|
12
|
+
namespace reanimated::css {
|
|
13
|
+
|
|
14
|
+
struct ChangedProps {
|
|
15
|
+
const folly::dynamic oldProps;
|
|
16
|
+
const folly::dynamic newProps;
|
|
17
|
+
const PropertyNames changedPropertyNames;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
bool isDiscreteProperty(const std::string &propName, const std::string &componentName);
|
|
21
|
+
|
|
22
|
+
// We need to specify it here because there are 2 methods referencing
|
|
23
|
+
// each other in the recursion and areArraysDifferentRecursive must be
|
|
24
|
+
// aware that getChangedPropsRecursive exists
|
|
25
|
+
std::pair<folly::dynamic, folly::dynamic> getChangedPropsRecursive(
|
|
26
|
+
const folly::dynamic &oldProp,
|
|
27
|
+
const folly::dynamic &newProp);
|
|
28
|
+
|
|
29
|
+
ChangedProps
|
|
30
|
+
getChangedProps(const folly::dynamic &oldProps, const folly::dynamic &newProps, const PropertyNames &allowedProperties);
|
|
31
|
+
|
|
32
|
+
} // namespace reanimated::css
|
package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
#ifdef RCT_NEW_ARCH_ENABLED
|
|
2
|
-
|
|
3
1
|
#include <reanimated/Fabric/ReanimatedCommitHook.h>
|
|
4
2
|
#include <reanimated/Fabric/ReanimatedCommitShadowNode.h>
|
|
5
3
|
#include <reanimated/Fabric/ShadowTreeCloner.h>
|
|
4
|
+
#include <reanimated/Tools/FeatureFlags.h>
|
|
5
|
+
#include <reanimated/Tools/ReanimatedSystraceSection.h>
|
|
6
6
|
|
|
7
7
|
#include <react/renderer/core/ComponentDescriptor.h>
|
|
8
8
|
|
|
9
|
+
#include <memory>
|
|
9
10
|
#include <unordered_map>
|
|
10
11
|
#include <vector>
|
|
11
12
|
|
|
@@ -14,11 +15,11 @@ using namespace facebook::react;
|
|
|
14
15
|
namespace reanimated {
|
|
15
16
|
|
|
16
17
|
ReanimatedCommitHook::ReanimatedCommitHook(
|
|
17
|
-
const std::shared_ptr<PropsRegistry> &propsRegistry,
|
|
18
18
|
const std::shared_ptr<UIManager> &uiManager,
|
|
19
|
-
const std::shared_ptr<
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
const std::shared_ptr<UpdatesRegistryManager> &updatesRegistryManager,
|
|
20
|
+
const std::shared_ptr<LayoutAnimationsProxyCommon> &layoutAnimationsProxy)
|
|
21
|
+
: uiManager_(uiManager),
|
|
22
|
+
updatesRegistryManager_(updatesRegistryManager),
|
|
22
23
|
layoutAnimationsProxy_(layoutAnimationsProxy) {
|
|
23
24
|
uiManager_->registerCommitHook(*this);
|
|
24
25
|
}
|
|
@@ -27,24 +28,24 @@ ReanimatedCommitHook::~ReanimatedCommitHook() noexcept {
|
|
|
27
28
|
uiManager_->unregisterCommitHook(*this);
|
|
28
29
|
}
|
|
29
30
|
|
|
30
|
-
void ReanimatedCommitHook::maybeInitializeLayoutAnimations(
|
|
31
|
-
SurfaceId surfaceId) {
|
|
31
|
+
void ReanimatedCommitHook::maybeInitializeLayoutAnimations(SurfaceId surfaceId) {
|
|
32
32
|
auto lock = std::unique_lock<std::mutex>(mutex_);
|
|
33
33
|
if (surfaceId > currentMaxSurfaceId_) {
|
|
34
34
|
// when a new surfaceId is observed we call setMountingOverrideDelegate
|
|
35
35
|
// for all yet unseen surfaces
|
|
36
|
-
uiManager_->getShadowTreeRegistry().enumerate(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
uiManager_->getShadowTreeRegistry().enumerate([strongThis = shared_from_this()](
|
|
37
|
+
const ShadowTree &shadowTree, bool &stop) {
|
|
38
|
+
// Executed synchronously.
|
|
39
|
+
if (shadowTree.getSurfaceId() <= strongThis->currentMaxSurfaceId_) {
|
|
40
|
+
// the set function actually adds our delegate to a list, so we
|
|
41
|
+
// shouldn't invoke it twice for the same surface
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// TODO: We should consider registering a new instance of proxy for each surface.
|
|
45
|
+
// The current approach will encounter problems on platforms where it is more common to have multiple surfaces.
|
|
46
|
+
strongThis->layoutAnimationsProxy_->startSurface(shadowTree.getSurfaceId());
|
|
47
|
+
shadowTree.getMountingCoordinator()->setMountingOverrideDelegate(strongThis->layoutAnimationsProxy_);
|
|
48
|
+
});
|
|
48
49
|
currentMaxSurfaceId_ = surfaceId;
|
|
49
50
|
}
|
|
50
51
|
}
|
|
@@ -52,50 +53,61 @@ void ReanimatedCommitHook::maybeInitializeLayoutAnimations(
|
|
|
52
53
|
RootShadowNode::Unshared ReanimatedCommitHook::shadowTreeWillCommit(
|
|
53
54
|
ShadowTree const &,
|
|
54
55
|
RootShadowNode::Shared const &,
|
|
55
|
-
RootShadowNode::Unshared const &newRootShadowNode
|
|
56
|
+
RootShadowNode::Unshared const &newRootShadowNode
|
|
57
|
+
#if REACT_NATIVE_MINOR_VERSION >= 80
|
|
58
|
+
,
|
|
59
|
+
const ShadowTreeCommitOptions &commitOptions
|
|
60
|
+
#endif
|
|
61
|
+
) noexcept {
|
|
62
|
+
ReanimatedSystraceSection s("ReanimatedCommitHook::shadowTreeWillCommit");
|
|
63
|
+
|
|
56
64
|
maybeInitializeLayoutAnimations(newRootShadowNode->getSurfaceId());
|
|
57
65
|
|
|
58
|
-
auto reaShadowNode =
|
|
59
|
-
std::reinterpret_pointer_cast<ReanimatedCommitShadowNode>(
|
|
60
|
-
newRootShadowNode);
|
|
66
|
+
auto reaShadowNode = std::reinterpret_pointer_cast<ReanimatedCommitShadowNode>(newRootShadowNode);
|
|
61
67
|
|
|
62
68
|
if (reaShadowNode->hasReanimatedCommitTrait()) {
|
|
63
69
|
// ShadowTree commited by Reanimated, no need to apply updates from
|
|
64
|
-
//
|
|
70
|
+
// the updates registry manager
|
|
65
71
|
reaShadowNode->unsetReanimatedCommitTrait();
|
|
66
72
|
reaShadowNode->setReanimatedMountTrait();
|
|
67
73
|
return newRootShadowNode;
|
|
68
74
|
}
|
|
69
75
|
|
|
70
|
-
|
|
76
|
+
#if REACT_NATIVE_MINOR_VERSION >= 80
|
|
77
|
+
if constexpr (StaticFeatureFlags::getFlag("USE_COMMIT_HOOK_ONLY_FOR_REACT_COMMITS")) {
|
|
78
|
+
// State updates are based on the currently committed ShadowTree,
|
|
79
|
+
// which means that all animation changes are already included.
|
|
80
|
+
// Therefore, there's no need to reapply styles from the props map.
|
|
81
|
+
if (commitOptions.source != ShadowTreeCommitSource::React) {
|
|
82
|
+
return newRootShadowNode;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
#endif
|
|
86
|
+
|
|
87
|
+
// ShadowTree not commited by Reanimated, apply updates from the updates
|
|
88
|
+
// registry manager
|
|
71
89
|
reaShadowNode->unsetReanimatedMountTrait();
|
|
72
90
|
RootShadowNode::Unshared rootNode = newRootShadowNode;
|
|
73
|
-
PropsMap propsMap;
|
|
74
91
|
|
|
75
92
|
{
|
|
76
|
-
auto lock =
|
|
93
|
+
auto lock = updatesRegistryManager_->lock();
|
|
77
94
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
propsMap[&family].emplace_back(props);
|
|
81
|
-
});
|
|
95
|
+
PropsMap propsMap = updatesRegistryManager_->collectProps();
|
|
96
|
+
updatesRegistryManager_->cancelCommitAfterPause();
|
|
82
97
|
|
|
83
98
|
rootNode = cloneShadowTreeWithNewProps(*rootNode, propsMap);
|
|
84
|
-
|
|
85
99
|
// If the commit comes from React Native then pause commits from
|
|
86
100
|
// Reanimated since the ShadowTree to be committed by Reanimated may not
|
|
87
101
|
// include the new changes from React Native yet and all changes of animated
|
|
88
|
-
// props will be applied in ReanimatedCommitHook by
|
|
89
|
-
// PropsRegistry.
|
|
102
|
+
// props will be applied in ReanimatedCommitHook by UpdatesRegistryManager
|
|
90
103
|
// This is very important, since if we didn't pause Reanimated commits,
|
|
91
104
|
// it could lead to RN commits being delayed until the animation is finished
|
|
92
|
-
// (very bad).
|
|
93
|
-
|
|
105
|
+
// (very bad). We don't pause Reanimated commits for state updates coming
|
|
106
|
+
// from React Native as this would break sticky header animations.
|
|
107
|
+
updatesRegistryManager_->pauseReanimatedCommits();
|
|
94
108
|
}
|
|
95
109
|
|
|
96
110
|
return rootNode;
|
|
97
111
|
}
|
|
98
112
|
|
|
99
113
|
} // namespace reanimated
|
|
100
|
-
|
|
101
|
-
#endif // RCT_NEW_ARCH_ENABLED
|