@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.
Files changed (275) hide show
  1. package/compatibility.json +161 -0
  2. package/harmony/reanimated/BuildProfile.ets +1 -1
  3. package/harmony/reanimated/build-profile.json5 +8 -1
  4. package/harmony/reanimated/oh-package.json5 +3 -2
  5. package/harmony/reanimated/src/main/cpp/CMakeLists.txt +31 -40
  6. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +11 -16
  7. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +3 -4
  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 +51 -39
  158. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +13 -15
  159. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +0 -3
  160. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +22 -53
  161. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +12 -8
  162. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +46 -37
  163. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +3 -10
  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 +4 -2
  171. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +62 -157
  172. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +38 -46
  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} +303 -276
  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 +5 -65
  180. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +52 -82
  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 +957 -552
  187. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +87 -111
  188. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +115 -163
  189. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +38 -54
  190. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +34 -36
  191. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +8 -0
  192. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +46 -58
  193. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +5 -9
  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 +26 -57
  197. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +12 -33
  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 +3 -4
  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 +12 -1
  209. package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +1 -4
  210. package/harmony/reanimated.har +0 -0
  211. package/package.json +36 -18
  212. package/scripts/deploy.js +191 -0
  213. package/scripts/set-reanimated-version.js +37 -0
  214. package/scripts/update-version.js +119 -0
  215. package/scripts/validate-react-native-version.js +46 -0
  216. package/scripts/validate-worklets-build.js +17 -0
  217. package/scripts/validate-worklets-version.js +79 -0
  218. package/scripts/worklets-version.json +4 -0
  219. package/LICENSE +0 -21
  220. package/README.OpenSource +0 -11
  221. package/README.md +0 -10
  222. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
  223. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
  224. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
  225. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
  226. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
  227. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
  228. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
  229. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
  230. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
  231. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
  232. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
  233. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
  234. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
  235. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
  236. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
  237. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
  238. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
  239. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
  240. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
  241. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
  242. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
  243. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
  244. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
  245. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
  246. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
  247. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
  248. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
  249. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
  250. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
  251. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
  252. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
  253. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
  254. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
  255. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
  256. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
  257. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
  258. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
  259. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
  260. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
  261. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
  262. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
  263. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
  264. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -155
  265. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
  266. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
  267. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -182
  268. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
  269. package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
  270. package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
  271. package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
  272. package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
  273. package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
  274. package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
  275. package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
@@ -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
@@ -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
@@ -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,10 @@
1
+ #pragma once
2
+
3
+ #include <algorithm>
4
+ #include <vector>
5
+
6
+ namespace reanimated::css {
7
+
8
+ size_t firstSmallerOrEqual(double x, const std::vector<double> &arr);
9
+
10
+ } // 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
@@ -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<LayoutAnimationsProxy> &layoutAnimationsProxy)
20
- : propsRegistry_(propsRegistry),
21
- uiManager_(uiManager),
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
- [strongThis = shared_from_this()](
38
- const ShadowTree &shadowTree, bool &stop) {
39
- // Executed synchronously.
40
- if (shadowTree.getSurfaceId() <= strongThis->currentMaxSurfaceId_) {
41
- // the set function actually adds our delegate to a list, so we
42
- // shouldn't invoke it twice for the same surface
43
- return;
44
- }
45
- shadowTree.getMountingCoordinator()->setMountingOverrideDelegate(
46
- strongThis->layoutAnimationsProxy_);
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) noexcept {
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
- // PropsRegistry
70
+ // the updates registry manager
65
71
  reaShadowNode->unsetReanimatedCommitTrait();
66
72
  reaShadowNode->setReanimatedMountTrait();
67
73
  return newRootShadowNode;
68
74
  }
69
75
 
70
- // ShadowTree not commited by Reanimated, apply updates from PropsRegistry
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 = propsRegistry_->createLock();
93
+ auto lock = updatesRegistryManager_->lock();
77
94
 
78
- propsRegistry_->for_each(
79
- [&](const ShadowNodeFamily &family, const folly::dynamic &props) {
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 iterating over
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
- propsRegistry_->pauseReanimatedCommits();
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