@react-native-ohos/react-native-reanimated 3.18.2-rc.2 → 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.
Files changed (282) hide show
  1. package/compatibility.json +161 -0
  2. package/harmony/reanimated/BuildProfile.ets +16 -16
  3. package/harmony/reanimated/build-profile.json5 +18 -11
  4. package/harmony/reanimated/oh-package.json5 +12 -11
  5. package/harmony/reanimated/src/main/cpp/CMakeLists.txt +31 -40
  6. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +81 -86
  7. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +46 -47
  8. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -0
  9. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -0
  10. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -0
  11. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -0
  12. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -0
  13. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -0
  14. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -0
  15. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -0
  16. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -0
  17. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -0
  18. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -0
  19. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -0
  20. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -0
  21. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -0
  22. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -0
  23. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -0
  24. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -0
  25. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +93 -0
  26. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -0
  27. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -0
  28. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -0
  29. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -0
  30. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -0
  31. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -0
  32. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +44 -0
  33. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -0
  34. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -0
  35. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -0
  36. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -0
  37. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -0
  38. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -0
  39. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -0
  40. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -0
  41. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -0
  42. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -0
  43. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -0
  44. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -0
  45. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -0
  46. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -0
  47. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -0
  48. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -0
  49. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -0
  50. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -0
  51. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -0
  52. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -0
  53. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -0
  54. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -0
  55. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -0
  56. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -0
  57. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -0
  58. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -0
  59. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -0
  60. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -0
  61. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -0
  62. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -0
  63. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -0
  64. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -0
  65. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -0
  66. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -0
  67. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -0
  68. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -0
  69. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -0
  70. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -0
  71. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -0
  72. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -0
  73. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -0
  74. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -0
  75. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -0
  76. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -0
  77. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -0
  78. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -0
  79. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -0
  80. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -0
  81. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -0
  82. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -0
  83. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -0
  84. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -0
  85. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -0
  86. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -0
  87. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -0
  88. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -0
  89. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -0
  90. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -0
  91. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -0
  92. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -0
  93. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -0
  94. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -0
  95. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -0
  96. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -0
  97. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -0
  98. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -0
  99. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -0
  100. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -0
  101. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -0
  102. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -0
  103. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -0
  104. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -0
  105. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -0
  106. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -0
  107. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -0
  108. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -0
  109. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -0
  110. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -0
  111. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -0
  112. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -0
  113. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -0
  114. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -0
  115. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -0
  116. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -0
  117. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -0
  118. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -0
  119. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -0
  120. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -0
  121. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -0
  122. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -0
  123. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -0
  124. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -0
  125. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -0
  126. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -0
  127. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -0
  128. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -0
  129. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -0
  130. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -0
  131. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -0
  132. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -0
  133. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -0
  134. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -0
  135. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -0
  136. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -0
  137. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -0
  138. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -0
  139. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -0
  140. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -0
  141. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -0
  142. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -0
  143. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -0
  144. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -0
  145. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -0
  146. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -0
  147. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +110 -0
  148. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -0
  149. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -0
  150. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -0
  151. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -0
  152. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -0
  153. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -0
  154. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -0
  155. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -0
  156. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -0
  157. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +113 -101
  158. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +49 -51
  159. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +46 -49
  160. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +56 -96
  161. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +37 -33
  162. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +104 -95
  163. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +22 -29
  164. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -0
  165. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -0
  166. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -0
  167. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -0
  168. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -0
  169. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -0
  170. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +11 -9
  171. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +137 -232
  172. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +82 -90
  173. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -0
  174. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -0
  175. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -0
  176. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -0
  177. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/{LayoutAnimationsProxy.cpp → LayoutAnimationsProxy_Legacy.cpp} +897 -870
  178. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -0
  179. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +31 -91
  180. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +146 -176
  181. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -0
  182. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -0
  183. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -0
  184. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -0
  185. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -0
  186. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +1376 -971
  187. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +228 -252
  188. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +183 -231
  189. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +93 -109
  190. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +54 -56
  191. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +28 -20
  192. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +58 -70
  193. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +31 -35
  194. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -0
  195. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -0
  196. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +67 -98
  197. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +114 -135
  198. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -0
  199. package/harmony/reanimated/src/main/cpp/Common/cpp/{worklets → reanimated}/Tools/ReanimatedVersion.h +18 -19
  200. package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +60 -85
  201. package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +1 -0
  202. package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +0 -3
  203. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +266 -0
  204. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -0
  205. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +36 -0
  206. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -0
  207. package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +3 -3
  208. package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +5 -1
  209. package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +1 -4
  210. package/harmony/reanimated/src/main/module.json5 +12 -12
  211. package/harmony/reanimated/src/main/resources/base/element/color.json +7 -7
  212. package/harmony/reanimated/src/main/resources/base/element/string.json +15 -15
  213. package/harmony/reanimated/src/main/resources/base/profile/main_pages.json +5 -5
  214. package/harmony/reanimated/src/main/resources/en_US/element/string.json +15 -15
  215. package/harmony/reanimated/src/main/resources/zh_CN/element/string.json +15 -15
  216. package/harmony/reanimated/ts.ts +6 -6
  217. package/harmony/reanimated.har +0 -0
  218. package/package.json +68 -50
  219. package/scripts/deploy.js +191 -0
  220. package/scripts/set-reanimated-version.js +37 -0
  221. package/scripts/update-version.js +119 -0
  222. package/scripts/validate-react-native-version.js +46 -0
  223. package/scripts/validate-worklets-build.js +17 -0
  224. package/scripts/validate-worklets-version.js +79 -0
  225. package/scripts/worklets-version.json +4 -0
  226. package/LICENSE +0 -21
  227. package/README.OpenSource +0 -11
  228. package/README.md +0 -10
  229. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
  230. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
  231. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
  232. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
  233. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
  234. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
  235. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
  236. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
  237. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
  238. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
  239. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
  240. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
  241. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
  242. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
  243. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
  244. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
  245. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
  246. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
  247. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
  248. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
  249. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
  250. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
  251. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
  252. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
  253. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
  254. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
  255. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
  256. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
  257. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
  258. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
  259. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
  260. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
  261. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
  262. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
  263. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
  264. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
  265. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
  266. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
  267. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
  268. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
  269. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
  270. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
  271. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -173
  272. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
  273. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
  274. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -189
  275. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
  276. package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
  277. package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
  278. package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
  279. package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
  280. package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
  281. package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
  282. package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
@@ -0,0 +1,155 @@
1
+ #include <reanimated/CSS/misc/ViewStylesRepository.h>
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ namespace reanimated::css {
7
+
8
+ ViewStylesRepository::ViewStylesRepository(
9
+ const std::shared_ptr<StaticPropsRegistry> &staticPropsRegistry,
10
+ const std::shared_ptr<AnimatedPropsRegistry> &animatedPropsRegistry)
11
+ : staticPropsRegistry_(staticPropsRegistry), animatedPropsRegistry_(animatedPropsRegistry) {}
12
+
13
+ jsi::Value ViewStylesRepository::getNodeProp(
14
+ const std::shared_ptr<const ShadowNode> &shadowNode,
15
+ const std::string &propName) {
16
+ int tag = shadowNode->getTag();
17
+
18
+ auto &cachedNode = shadowNodeCache_[tag];
19
+ updateCacheIfNeeded(cachedNode, shadowNode);
20
+
21
+ if (propName == "width" || propName == "height" || propName == "top" || propName == "left") {
22
+ const auto &layoutMetrics = cachedNode.layoutMetrics;
23
+
24
+ if (propName == "width") {
25
+ return {layoutMetrics.frame.size.width};
26
+ } else if (propName == "height") {
27
+ return {layoutMetrics.frame.size.height};
28
+ } else if (propName == "top") {
29
+ return {layoutMetrics.frame.origin.y};
30
+ } else if (propName == "left") {
31
+ return {layoutMetrics.frame.origin.x};
32
+ }
33
+ } else {
34
+ const auto &viewProps = cachedNode.viewProps;
35
+
36
+ if (propName == "opacity") {
37
+ return {viewProps->opacity};
38
+ } else if (propName == "zIndex") {
39
+ return viewProps->zIndex.has_value() ? jsi::Value(*viewProps->zIndex) : jsi::Value(0);
40
+ } else if (propName == "backgroundColor") {
41
+ return {static_cast<int32_t>(*viewProps->backgroundColor)};
42
+ }
43
+ }
44
+
45
+ throw std::runtime_error("[Reanimated] Unsupported property: " + propName);
46
+ }
47
+
48
+ jsi::Value ViewStylesRepository::getParentNodeProp(
49
+ const std::shared_ptr<const ShadowNode> &shadowNode,
50
+ const std::string &propName) {
51
+ const auto surfaceId = shadowNode->getSurfaceId();
52
+ const auto &shadowTreeRegistry = uiManager_->getShadowTreeRegistry();
53
+
54
+ std::shared_ptr<const ShadowNode> parentNode = nullptr;
55
+
56
+ shadowTreeRegistry.visit(surfaceId, [&](ShadowTree const &shadowTree) {
57
+ auto currentRevision = shadowTree.getCurrentRevision();
58
+ parentNode = dom::getParentNode(currentRevision.rootShadowNode, *shadowNode);
59
+ });
60
+
61
+ if (!parentNode) {
62
+ return jsi::Value::undefined();
63
+ }
64
+
65
+ return getNodeProp(parentNode, propName);
66
+ }
67
+
68
+ folly::dynamic ViewStylesRepository::getStyleProp(const Tag tag, const PropertyPath &propertyPath) {
69
+ auto animatedValue = getPropertyValue(animatedPropsRegistry_->get(tag), propertyPath);
70
+ if (!animatedValue.isNull()) {
71
+ return animatedValue;
72
+ }
73
+
74
+ return getPropertyValue(staticPropsRegistry_->get(tag), propertyPath);
75
+ }
76
+
77
+ void ViewStylesRepository::clearNodesCache() {
78
+ shadowNodeCache_.clear();
79
+ }
80
+
81
+ void ViewStylesRepository::updateCacheIfNeeded(
82
+ CachedShadowNode &cachedNode,
83
+ const std::shared_ptr<const ShadowNode> &shadowNode) {
84
+ auto newestCloneOfShadowNode = uiManager_->getNewestCloneOfShadowNode(*shadowNode);
85
+
86
+ // Check if newestCloneOfShadowNode is valid (is already mounted / not
87
+ // yet unmounted)
88
+ if (!newestCloneOfShadowNode) {
89
+ return;
90
+ }
91
+
92
+ auto layoutableShadowNode = dynamic_cast<const LayoutableShadowNode *>(newestCloneOfShadowNode.get());
93
+ if (!layoutableShadowNode) {
94
+ return;
95
+ }
96
+
97
+ cachedNode.layoutMetrics = layoutableShadowNode->layoutMetrics_;
98
+ cachedNode.viewProps = std::static_pointer_cast<const ViewProps>(newestCloneOfShadowNode->getProps());
99
+ }
100
+
101
+ folly::dynamic ViewStylesRepository::getPropertyValue(const folly::dynamic &value, const PropertyPath &propertyPath) {
102
+ const folly::dynamic *currentValue = &value;
103
+
104
+ for (size_t i = 0; i < propertyPath.size(); ++i) {
105
+ if (currentValue->isNull() || currentValue->empty()) {
106
+ return {};
107
+ }
108
+
109
+ const auto &propName = propertyPath[i];
110
+
111
+ if (!currentValue->isObject()) {
112
+ return {};
113
+ }
114
+
115
+ if (propName == "transform") {
116
+ auto transformIt = currentValue->find("transform");
117
+ if (transformIt == currentValue->items().end()) {
118
+ return {};
119
+ }
120
+
121
+ const auto &transform = transformIt->second;
122
+ if (!transform.isArray()) {
123
+ return {};
124
+ }
125
+
126
+ if (i + 1 >= propertyPath.size()) {
127
+ return transform;
128
+ }
129
+
130
+ const std::string &transformPropName = propertyPath[i + 1];
131
+
132
+ for (const auto &transformEntry : transform) {
133
+ if (transformEntry.isObject()) {
134
+ auto transformPropIt = transformEntry.find(transformPropName);
135
+ if (transformPropIt != transformEntry.items().end()) {
136
+ return transformPropIt->second;
137
+ }
138
+ }
139
+ }
140
+
141
+ return {};
142
+ }
143
+
144
+ auto propIt = currentValue->find(propName);
145
+ if (propIt == currentValue->items().end()) {
146
+ return {};
147
+ }
148
+
149
+ currentValue = &propIt->second;
150
+ }
151
+
152
+ return *currentValue;
153
+ }
154
+
155
+ } // namespace reanimated::css
@@ -0,0 +1,53 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/common/definitions.h>
4
+ #include <reanimated/CSS/registries/StaticPropsRegistry.h>
5
+ #include <reanimated/Fabric/updates/AnimatedPropsRegistry.h>
6
+
7
+ #include <react/renderer/components/view/ViewProps.h>
8
+ #include <react/renderer/core/LayoutableShadowNode.h>
9
+ #include <react/renderer/dom/DOM.h>
10
+
11
+ #include <memory>
12
+ #include <string>
13
+ #include <unordered_map>
14
+
15
+ namespace reanimated::css {
16
+
17
+ using namespace facebook;
18
+ using namespace react;
19
+
20
+ struct CachedShadowNode {
21
+ LayoutMetrics layoutMetrics;
22
+ std::shared_ptr<const ViewProps> viewProps;
23
+ };
24
+
25
+ class ViewStylesRepository {
26
+ public:
27
+ ViewStylesRepository(
28
+ const std::shared_ptr<StaticPropsRegistry> &staticPropsRegistry,
29
+ const std::shared_ptr<AnimatedPropsRegistry> &animatedPropsRegistry);
30
+
31
+ void setUIManager(const std::shared_ptr<UIManager> &uiManager) {
32
+ uiManager_ = uiManager;
33
+ }
34
+
35
+ jsi::Value getNodeProp(const std::shared_ptr<const ShadowNode> &shadowNode, const std::string &propName);
36
+ jsi::Value getParentNodeProp(const std::shared_ptr<const ShadowNode> &shadowNode, const std::string &propName);
37
+ folly::dynamic getStyleProp(Tag tag, const PropertyPath &propertyPath);
38
+
39
+ void clearNodesCache();
40
+
41
+ private:
42
+ std::shared_ptr<UIManager> uiManager_;
43
+ std::shared_ptr<StaticPropsRegistry> staticPropsRegistry_;
44
+ std::shared_ptr<AnimatedPropsRegistry> animatedPropsRegistry_;
45
+
46
+ std::unordered_map<int, CachedShadowNode> shadowNodeCache_;
47
+
48
+ void updateCacheIfNeeded(CachedShadowNode &cachedNode, const std::shared_ptr<const ShadowNode> &shadowNode);
49
+
50
+ static folly::dynamic getPropertyValue(const folly::dynamic &value, const PropertyPath &propertyPath);
51
+ };
52
+
53
+ } // namespace reanimated::css
@@ -0,0 +1,170 @@
1
+ #include <reanimated/CSS/progress/AnimationProgressProvider.h>
2
+
3
+ #include <memory>
4
+ #include <utility>
5
+
6
+ namespace reanimated::css {
7
+
8
+ AnimationProgressProvider::AnimationProgressProvider(
9
+ const double timestamp,
10
+ const double duration,
11
+ const double delay,
12
+ const double iterationCount,
13
+ const AnimationDirection direction,
14
+ EasingFunction easingFunction,
15
+ const std::shared_ptr<KeyframeEasingFunctions> &keyframeEasingFunctions)
16
+ : RawProgressProvider(timestamp, duration, delay),
17
+ iterationCount_(iterationCount),
18
+ direction_(direction),
19
+ easingFunction_(std::move(easingFunction)),
20
+ keyframeEasingFunctions_(keyframeEasingFunctions) {}
21
+
22
+ void AnimationProgressProvider::setIterationCount(double iterationCount) {
23
+ iterationCount_ = iterationCount;
24
+ }
25
+
26
+ void AnimationProgressProvider::setDirection(AnimationDirection direction) {
27
+ direction_ = direction;
28
+ }
29
+
30
+ void AnimationProgressProvider::setEasingFunction(const EasingFunction &easingFunction) {
31
+ easingFunction_ = easingFunction;
32
+ }
33
+
34
+ AnimationDirection AnimationProgressProvider::getDirection() const {
35
+ return direction_;
36
+ }
37
+
38
+ double AnimationProgressProvider::getGlobalProgress() const {
39
+ return applyAnimationDirection(rawProgress_.value_or(0));
40
+ }
41
+
42
+ AnimationProgressState AnimationProgressProvider::getState(const double timestamp) const {
43
+ if (shouldFinish(timestamp)) {
44
+ return AnimationProgressState::Finished;
45
+ }
46
+ if (pauseTimestamp_ > 0) {
47
+ return AnimationProgressState::Paused;
48
+ }
49
+ if (timestamp < getStartTimestamp(timestamp) || !rawProgress_.has_value()) {
50
+ return AnimationProgressState::Pending;
51
+ }
52
+ return AnimationProgressState::Running;
53
+ }
54
+
55
+ double AnimationProgressProvider::getPauseTimestamp() const {
56
+ return pauseTimestamp_;
57
+ }
58
+
59
+ double AnimationProgressProvider::getTotalPausedTime(const double timestamp) const {
60
+ return pauseTimestamp_ > 0 ? (totalPausedTime_ + (timestamp - pauseTimestamp_)) : totalPausedTime_;
61
+ }
62
+
63
+ double AnimationProgressProvider::getStartTimestamp(const double timestamp) const {
64
+ // Start timestamp is the timestamp when the first animation keyframe
65
+ // should be applied (it depends on the animation delay and the total
66
+ // time when the animation was paused)
67
+ return creationTimestamp_ + delay_ + getTotalPausedTime(timestamp);
68
+ }
69
+
70
+ double AnimationProgressProvider::getKeyframeProgress(const double fromOffset, const double toOffset) const {
71
+ if (fromOffset == toOffset) {
72
+ return 1;
73
+ }
74
+
75
+ const auto keyframeProgress = (getGlobalProgress() - fromOffset) / (toOffset - fromOffset);
76
+
77
+ // Use the overridden easing function if it was overridden for the
78
+ // current keyframe
79
+ const auto easingFunctionIt = keyframeEasingFunctions_->find(fromOffset);
80
+ if (easingFunctionIt != keyframeEasingFunctions_->end()) {
81
+ return easingFunctionIt->second(keyframeProgress);
82
+ }
83
+
84
+ return easingFunction_(keyframeProgress);
85
+ }
86
+
87
+ void AnimationProgressProvider::pause(const double timestamp) {
88
+ pauseTimestamp_ = timestamp;
89
+ }
90
+
91
+ void AnimationProgressProvider::play(const double timestamp) {
92
+ if (pauseTimestamp_ > 0) {
93
+ totalPausedTime_ += timestamp - pauseTimestamp_;
94
+ }
95
+ pauseTimestamp_ = 0;
96
+ }
97
+
98
+ void AnimationProgressProvider::resetProgress() {
99
+ RawProgressProvider::resetProgress();
100
+ currentIteration_ = 1;
101
+ previousIterationsDuration_ = 0;
102
+ }
103
+
104
+ bool AnimationProgressProvider::shouldFinish(const double timestamp) const {
105
+ if (iterationCount_ == 0) {
106
+ return true;
107
+ }
108
+ if (iterationCount_ == -1) {
109
+ return false;
110
+ }
111
+ const auto elapsedDuration = timestamp - getStartTimestamp(timestamp);
112
+ return elapsedDuration >= duration_ * iterationCount_;
113
+ }
114
+
115
+ std::optional<double> AnimationProgressProvider::calculateRawProgress(const double timestamp) {
116
+ const double currentIterationElapsedTime =
117
+ timestamp - (creationTimestamp_ + delay_ + previousIterationsDuration_ + getTotalPausedTime(timestamp));
118
+
119
+ if (currentIterationElapsedTime < 0) {
120
+ return std::nullopt;
121
+ }
122
+
123
+ const double iterationProgress = updateIterationProgress(currentIterationElapsedTime);
124
+
125
+ if (shouldFinish(timestamp)) {
126
+ // Override current progress for the last update in the last iteration to
127
+ // ensure that animation finishes exactly at the specified iteration
128
+ const double intPart = std::floor(iterationCount_);
129
+ return intPart == iterationCount_ ? 1 : iterationCount_ - intPart;
130
+ }
131
+
132
+ return iterationProgress;
133
+ }
134
+
135
+ double AnimationProgressProvider::updateIterationProgress(const double currentIterationElapsedTime) {
136
+ if (duration_ == 0) {
137
+ return 1;
138
+ }
139
+ // We can increase curentIteration by more than just one iteration if the
140
+ // animation delay is negative, thus we are using this division to get the
141
+ // number of iterations that have passed since the previous animation update
142
+ // (deltaIterations can be greater than for the first update of the
143
+ // animation with the negative delay)
144
+ const double progress = currentIterationElapsedTime / duration_;
145
+ const auto deltaIterations = static_cast<unsigned>(progress);
146
+
147
+ if (deltaIterations > 0) {
148
+ currentIteration_ += deltaIterations;
149
+ previousIterationsDuration_ = (currentIteration_ - 1) * duration_;
150
+ }
151
+
152
+ // If the current iteration changes, the progress must be updated
153
+ // respectively not to contain the progress of the previous iteration
154
+ return progress - deltaIterations;
155
+ }
156
+
157
+ double AnimationProgressProvider::applyAnimationDirection(const double progress) const {
158
+ switch (direction_) {
159
+ case AnimationDirection::Normal:
160
+ return progress;
161
+ case AnimationDirection::Reverse:
162
+ return 1.0 - progress;
163
+ case AnimationDirection::Alternate:
164
+ return currentIteration_ % 2 == 0 ? 1.0 - progress : progress;
165
+ case AnimationDirection::AlternateReverse:
166
+ return currentIteration_ % 2 == 0 ? progress : 1.0 - progress;
167
+ }
168
+ }
169
+
170
+ } // namespace reanimated::css
@@ -0,0 +1,67 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/configs/CSSAnimationConfig.h>
4
+ #include <reanimated/CSS/configs/CSSKeyframesConfig.h>
5
+ #include <reanimated/CSS/easing/EasingFunctions.h>
6
+ #include <reanimated/CSS/progress/KeyframeProgressProvider.h>
7
+ #include <reanimated/CSS/progress/RawProgressProvider.h>
8
+
9
+ #include <memory>
10
+
11
+ namespace reanimated::css {
12
+
13
+ enum class AnimationProgressState : std::uint8_t {
14
+ Pending, // When the animation is waiting for the delay to pass
15
+ Running,
16
+ Paused,
17
+ Finished
18
+ };
19
+
20
+ class AnimationProgressProvider final : public KeyframeProgressProvider, public RawProgressProvider {
21
+ public:
22
+ AnimationProgressProvider(
23
+ double timestamp,
24
+ double duration,
25
+ double delay,
26
+ double iterationCount,
27
+ AnimationDirection direction,
28
+ EasingFunction easingFunction,
29
+ const std::shared_ptr<KeyframeEasingFunctions> &keyframeEasingFunctions);
30
+
31
+ void setIterationCount(double iterationCount);
32
+ void setDirection(AnimationDirection direction);
33
+ void setEasingFunction(const EasingFunction &easingFunction);
34
+
35
+ AnimationDirection getDirection() const;
36
+ double getGlobalProgress() const override;
37
+ double getKeyframeProgress(double fromOffset, double toOffset) const override;
38
+ AnimationProgressState getState(double timestamp) const;
39
+ double getPauseTimestamp() const;
40
+ double getTotalPausedTime(double timestamp) const;
41
+ double getStartTimestamp(double timestamp) const;
42
+
43
+ void pause(double timestamp);
44
+ void play(double timestamp);
45
+ void resetProgress() override;
46
+
47
+ protected:
48
+ std::optional<double> calculateRawProgress(double timestamp) override;
49
+
50
+ private:
51
+ double iterationCount_;
52
+ AnimationDirection direction_;
53
+ EasingFunction easingFunction_;
54
+ std::shared_ptr<KeyframeEasingFunctions> keyframeEasingFunctions_;
55
+
56
+ unsigned currentIteration_ = 1;
57
+ double previousIterationsDuration_ = 0;
58
+ double pauseTimestamp_ = 0;
59
+ double totalPausedTime_ = 0;
60
+
61
+ bool shouldFinish(double timestamp) const;
62
+
63
+ double updateIterationProgress(double currentIterationElapsedTime);
64
+ double applyAnimationDirection(double iterationProgress) const;
65
+ };
66
+
67
+ } // namespace reanimated::css
@@ -0,0 +1,12 @@
1
+ #pragma once
2
+
3
+ namespace reanimated::css {
4
+
5
+ class KeyframeProgressProvider {
6
+ public:
7
+ virtual double getGlobalProgress() const = 0;
8
+
9
+ virtual double getKeyframeProgress(double fromOffset, double toOffset) const = 0;
10
+ };
11
+
12
+ } // namespace reanimated::css
@@ -0,0 +1,41 @@
1
+ #include <reanimated/CSS/progress/RawProgressProvider.h>
2
+
3
+ namespace reanimated::css {
4
+
5
+ RawProgressProvider::RawProgressProvider(const double timestamp, const double duration, const double delay)
6
+ : duration_(duration), delay_(delay), creationTimestamp_(timestamp) {}
7
+
8
+ void RawProgressProvider::setDuration(double duration) {
9
+ duration_ = duration;
10
+ }
11
+
12
+ void RawProgressProvider::setDelay(double delay) {
13
+ delay_ = delay;
14
+ }
15
+
16
+ void RawProgressProvider::resetProgress() {
17
+ rawProgress_.reset();
18
+ previousRawProgress_.reset();
19
+ }
20
+
21
+ void RawProgressProvider::update(const double timestamp) {
22
+ previousRawProgress_ = rawProgress_;
23
+
24
+ if (timestamp - creationTimestamp_ < delay_) {
25
+ rawProgress_.reset();
26
+ return;
27
+ }
28
+
29
+ rawProgress_ = calculateRawProgress(timestamp);
30
+ if (!rawProgress_.has_value()) {
31
+ return;
32
+ }
33
+
34
+ if (rawProgress_.value() < 0) {
35
+ rawProgress_.reset();
36
+ } else if (rawProgress_.value() >= 1) {
37
+ rawProgress_ = 1;
38
+ }
39
+ }
40
+
41
+ } // namespace reanimated::css
@@ -0,0 +1,31 @@
1
+ #pragma once
2
+
3
+ #include <optional>
4
+ namespace reanimated::css {
5
+
6
+ class RawProgressProvider {
7
+ public:
8
+ RawProgressProvider(double timestamp, double duration, double delay);
9
+
10
+ void setDuration(double duration);
11
+ void setDelay(double delay);
12
+
13
+ virtual void resetProgress();
14
+ void update(double timestamp);
15
+
16
+ protected:
17
+ double duration_;
18
+ double delay_;
19
+ double creationTimestamp_;
20
+
21
+ std::optional<double> rawProgress_;
22
+ std::optional<double> previousRawProgress_;
23
+
24
+ /**
25
+ * Calculates the progress of the animation at the given timestamp without
26
+ * applying any decorations (e.g. animation direction, easing)
27
+ */
28
+ virtual std::optional<double> calculateRawProgress(double timestamp) = 0;
29
+ };
30
+
31
+ } // namespace reanimated::css