@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
@@ -1,8 +1,7 @@
1
1
  #pragma once
2
- #ifdef RCT_NEW_ARCH_ENABLED
3
2
 
4
- #include <reanimated/Fabric/PropsRegistry.h>
5
- #include <reanimated/LayoutAnimations/LayoutAnimationsProxy.h>
3
+ #include <reanimated/Fabric/updates/UpdatesRegistryManager.h>
4
+ #include <reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h>
6
5
 
7
6
  #include <react/renderer/uimanager/UIManagerCommitHook.h>
8
7
 
@@ -12,14 +11,12 @@ using namespace facebook::react;
12
11
 
13
12
  namespace reanimated {
14
13
 
15
- class ReanimatedCommitHook
16
- : public UIManagerCommitHook,
17
- public std::enable_shared_from_this<ReanimatedCommitHook> {
14
+ class ReanimatedCommitHook : public UIManagerCommitHook, public std::enable_shared_from_this<ReanimatedCommitHook> {
18
15
  public:
19
16
  ReanimatedCommitHook(
20
- const std::shared_ptr<PropsRegistry> &propsRegistry,
21
17
  const std::shared_ptr<UIManager> &uiManager,
22
- const std::shared_ptr<LayoutAnimationsProxy> &layoutAnimationsProxy);
18
+ const std::shared_ptr<UpdatesRegistryManager> &updatesRegistryManager,
19
+ const std::shared_ptr<LayoutAnimationsProxyCommon> &layoutAnimationsProxy);
23
20
 
24
21
  ~ReanimatedCommitHook() noexcept override;
25
22
 
@@ -32,14 +29,17 @@ class ReanimatedCommitHook
32
29
  RootShadowNode::Unshared shadowTreeWillCommit(
33
30
  ShadowTree const &shadowTree,
34
31
  RootShadowNode::Shared const &oldRootShadowNode,
35
- RootShadowNode::Unshared const &newRootShadowNode) noexcept override;
32
+ RootShadowNode::Unshared const &newRootShadowNode
33
+ #if REACT_NATIVE_MINOR_VERSION >= 80
34
+ ,
35
+ const ShadowTreeCommitOptions &commitOptions
36
+ #endif
37
+ ) noexcept override;
36
38
 
37
39
  private:
38
- std::shared_ptr<PropsRegistry> propsRegistry_;
39
-
40
40
  std::shared_ptr<UIManager> uiManager_;
41
-
42
- std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy_;
41
+ std::shared_ptr<UpdatesRegistryManager> updatesRegistryManager_;
42
+ std::shared_ptr<LayoutAnimationsProxyCommon> layoutAnimationsProxy_;
43
43
 
44
44
  SurfaceId currentMaxSurfaceId_ = -1;
45
45
 
@@ -47,5 +47,3 @@ class ReanimatedCommitHook
47
47
  };
48
48
 
49
49
  } // namespace reanimated
50
-
51
- #endif // RCT_NEW_ARCH_ENABLED
@@ -1,5 +1,4 @@
1
1
  #pragma once
2
- #ifdef RCT_NEW_ARCH_ENABLED
3
2
 
4
3
  #include <react/renderer/core/ShadowNode.h>
5
4
 
@@ -45,5 +44,3 @@ class ReanimatedCommitShadowNode : public ShadowNode {
45
44
  };
46
45
 
47
46
  } // namespace reanimated
48
-
49
- #endif // RCT_NEW_ARCH_ENABLED
@@ -1,14 +1,16 @@
1
- #ifdef RCT_NEW_ARCH_ENABLED
2
-
3
1
  #include <reanimated/Fabric/ReanimatedCommitShadowNode.h>
4
2
  #include <reanimated/Fabric/ReanimatedMountHook.h>
3
+ #include <reanimated/Tools/ReanimatedSystraceSection.h>
4
+
5
+ #include <memory>
5
6
 
6
7
  namespace reanimated {
7
8
 
8
9
  ReanimatedMountHook::ReanimatedMountHook(
9
- const std::shared_ptr<PropsRegistry> &propsRegistry,
10
- const std::shared_ptr<UIManager> &uiManager)
11
- : propsRegistry_(propsRegistry), uiManager_(uiManager) {
10
+ const std::shared_ptr<UIManager> &uiManager,
11
+ const std::shared_ptr<UpdatesRegistryManager> &updatesRegistryManager,
12
+ const std::function<void()> &requestFlush)
13
+ : uiManager_(uiManager), updatesRegistryManager_(updatesRegistryManager), requestFlush_(requestFlush) {
12
14
  uiManager_->registerMountHook(*this);
13
15
  }
14
16
 
@@ -18,10 +20,16 @@ ReanimatedMountHook::~ReanimatedMountHook() noexcept {
18
20
 
19
21
  void ReanimatedMountHook::shadowTreeDidMount(
20
22
  const RootShadowNode::Shared &rootShadowNode,
21
- double) noexcept {
22
- auto reaShadowNode =
23
- std::reinterpret_pointer_cast<ReanimatedCommitShadowNode>(
24
- std::const_pointer_cast<RootShadowNode>(rootShadowNode));
23
+ #if REACT_NATIVE_MINOR_VERSION >= 81
24
+ HighResTimeStamp
25
+ #else
26
+ double
27
+ #endif // REACT_NATIVE_MINOR_VERSION >= 81
28
+ ) noexcept {
29
+ ReanimatedSystraceSection s("ReanimatedMountHook::shadowTreeDidMount");
30
+
31
+ auto reaShadowNode = std::reinterpret_pointer_cast<ReanimatedCommitShadowNode>(
32
+ std::const_pointer_cast<RootShadowNode>(rootShadowNode));
25
33
 
26
34
  if (reaShadowNode->hasReanimatedMountTrait()) {
27
35
  // We mark reanimated commits with ReanimatedMountTrait. We don't want other
@@ -33,55 +41,16 @@ void ReanimatedMountHook::shadowTreeDidMount(
33
41
  }
34
42
 
35
43
  {
36
- auto lock = propsRegistry_->createLock();
37
- propsRegistry_->handleNodeRemovals(*rootShadowNode);
44
+ auto lock = updatesRegistryManager_->lock();
45
+ updatesRegistryManager_->handleNodeRemovals(*rootShadowNode);
38
46
 
39
47
  // When commit from React Native has finished, we reset the skip commit flag
40
48
  // in order to allow Reanimated to commit its tree
41
- propsRegistry_->unpauseReanimatedCommits();
42
- if (!propsRegistry_->shouldCommitAfterPause()) {
43
- return;
49
+ updatesRegistryManager_->unpauseReanimatedCommits();
50
+ if (updatesRegistryManager_->shouldCommitAfterPause()) {
51
+ requestFlush_();
44
52
  }
45
53
  }
46
-
47
- const auto &shadowTreeRegistry = uiManager_->getShadowTreeRegistry();
48
- shadowTreeRegistry.visit(
49
- rootShadowNode->getSurfaceId(), [&](ShadowTree const &shadowTree) {
50
- shadowTree.commit(
51
- [&](RootShadowNode const &oldRootShadowNode)
52
- -> RootShadowNode::Unshared {
53
- PropsMap propsMap;
54
-
55
- RootShadowNode::Unshared rootNode =
56
- std::static_pointer_cast<RootShadowNode>(
57
- oldRootShadowNode.ShadowNode::clone({}));
58
- {
59
- auto lock = propsRegistry_->createLock();
60
-
61
- propsRegistry_->for_each([&](const ShadowNodeFamily &family,
62
- const folly::dynamic &props) {
63
- propsMap[&family].emplace_back(props);
64
- });
65
-
66
- rootNode =
67
- cloneShadowTreeWithNewProps(oldRootShadowNode, propsMap);
68
- }
69
-
70
- // Mark the commit as Reanimated commit so that we can
71
- // distinguish it in ReanimatedCommitHook.
72
- auto reaShadowNode =
73
- std::reinterpret_pointer_cast<ReanimatedCommitShadowNode>(
74
- rootNode);
75
- reaShadowNode->setReanimatedCommitTrait();
76
-
77
- return rootNode;
78
- },
79
- {/* .enableStateReconciliation = */
80
- false,
81
- /* .mountSynchronously = */ true});
82
- });
83
54
  }
84
55
 
85
56
  } // namespace reanimated
86
-
87
- #endif // RCT_NEW_ARCH_ENABLED
@@ -1,8 +1,7 @@
1
1
  #pragma once
2
- #ifdef RCT_NEW_ARCH_ENABLED
3
2
 
4
- #include <reanimated/Fabric/PropsRegistry.h>
5
3
  #include <reanimated/Fabric/ShadowTreeCloner.h>
4
+ #include <reanimated/Fabric/updates/UpdatesRegistryManager.h>
6
5
 
7
6
  #include <react/renderer/uimanager/UIManagerMountHook.h>
8
7
 
@@ -15,19 +14,24 @@ using namespace facebook::react;
15
14
  class ReanimatedMountHook : public UIManagerMountHook {
16
15
  public:
17
16
  ReanimatedMountHook(
18
- const std::shared_ptr<PropsRegistry> &propsRegistry,
19
- const std::shared_ptr<UIManager> &uiManager);
17
+ const std::shared_ptr<UIManager> &uiManager,
18
+ const std::shared_ptr<UpdatesRegistryManager> &updatesRegistryManager,
19
+ const std::function<void()> &requestFlush);
20
20
  ~ReanimatedMountHook() noexcept override;
21
21
 
22
22
  void shadowTreeDidMount(
23
23
  RootShadowNode::Shared const &rootShadowNode,
24
- double mountTime) noexcept override;
24
+ #if REACT_NATIVE_MINOR_VERSION >= 81
25
+ HighResTimeStamp mountTime
26
+ #else
27
+ double mountTime
28
+ #endif // REACT_NATIVE_MINOR_VERSION >= 81
29
+ ) noexcept override;
25
30
 
26
31
  private:
27
- const std::shared_ptr<PropsRegistry> propsRegistry_;
28
32
  const std::shared_ptr<UIManager> uiManager_;
33
+ const std::shared_ptr<UpdatesRegistryManager> updatesRegistryManager_;
34
+ const std::function<void()> requestFlush_;
29
35
  };
30
36
 
31
37
  } // namespace reanimated
32
-
33
- #endif // RCT_NEW_ARCH_ENABLED
@@ -1,24 +1,22 @@
1
- #ifdef RCT_NEW_ARCH_ENABLED
2
-
3
1
  #include <reanimated/Fabric/ShadowTreeCloner.h>
2
+ #include <reanimated/Tools/ReanimatedSystraceSection.h>
4
3
 
4
+ #include <memory>
5
5
  #include <ranges>
6
6
  #include <utility>
7
7
 
8
8
  namespace reanimated {
9
9
 
10
- Props::Shared mergeProps(
11
- const ShadowNode &shadowNode,
12
- const PropsMap &propsMap,
13
- const ShadowNodeFamily &family) {
10
+ Props::Shared mergeProps(const ShadowNode &shadowNode, const PropsMap &propsMap, const ShadowNodeFamily &family) {
11
+ ReanimatedSystraceSection s("ShadowTreeCloner::mergeProps");
12
+
14
13
  const auto it = propsMap.find(&family);
15
14
 
16
15
  if (it == propsMap.end()) {
17
16
  return ShadowNodeFragment::propsPlaceholder();
18
17
  }
19
18
 
20
- PropsParserContext propsParserContext{
21
- shadowNode.getSurfaceId(), *shadowNode.getContextContainer()};
19
+ PropsParserContext propsParserContext{shadowNode.getSurfaceId(), *shadowNode.getContextContainer()};
22
20
  const auto &propsVector = it->second;
23
21
  auto newProps = shadowNode.getProps();
24
22
 
@@ -26,23 +24,20 @@ Props::Shared mergeProps(
26
24
  if (propsVector.size() > 1) {
27
25
  folly::dynamic newPropsDynamic = folly::dynamic::object;
28
26
  for (const auto &props : propsVector) {
29
- newPropsDynamic = folly::dynamic::merge(
30
- props.operator folly::dynamic(), newPropsDynamic);
27
+ newPropsDynamic = folly::dynamic::merge(props.operator folly::dynamic(), newPropsDynamic);
31
28
  }
32
- return shadowNode.getComponentDescriptor().cloneProps(
33
- propsParserContext, newProps, RawProps(newPropsDynamic));
29
+ return shadowNode.getComponentDescriptor().cloneProps(propsParserContext, newProps, RawProps(newPropsDynamic));
34
30
  }
35
31
  #endif
36
32
 
37
33
  for (const auto &props : propsVector) {
38
- newProps = shadowNode.getComponentDescriptor().cloneProps(
39
- propsParserContext, newProps, RawProps(props));
34
+ newProps = shadowNode.getComponentDescriptor().cloneProps(propsParserContext, newProps, RawProps(props));
40
35
  }
41
36
 
42
37
  return newProps;
43
38
  }
44
39
 
45
- ShadowNode::Unshared cloneShadowTreeWithNewPropsRecursive(
40
+ std::shared_ptr<ShadowNode> cloneShadowTreeWithNewPropsRecursive(
46
41
  const ShadowNode &shadowNode,
47
42
  const ChildrenMap &childrenMap,
48
43
  const PropsMap &propsMap) {
@@ -52,35 +47,51 @@ ShadowNode::Unshared cloneShadowTreeWithNewPropsRecursive(
52
47
 
53
48
  if (affectedChildrenIt != childrenMap.end()) {
54
49
  for (const auto index : affectedChildrenIt->second) {
55
- children[index] = cloneShadowTreeWithNewPropsRecursive(
56
- *children[index], childrenMap, propsMap);
50
+ children[index] = cloneShadowTreeWithNewPropsRecursive(*children[index], childrenMap, propsMap);
57
51
  }
58
52
  }
59
53
 
60
54
  return shadowNode.clone(
61
55
  {mergeProps(shadowNode, propsMap, *family),
62
- std::make_shared<ShadowNode::ListOfShared>(children),
63
- shadowNode.getState()});
56
+ std::make_shared<std::vector<std::shared_ptr<const ShadowNode>>>(children),
57
+ shadowNode.getState(),
58
+ false});
64
59
  }
65
60
 
66
- RootShadowNode::Unshared cloneShadowTreeWithNewProps(
67
- const RootShadowNode &oldRootNode,
68
- const PropsMap &propsMap) {
69
- ChildrenMap childrenMap;
61
+ RootShadowNode::Unshared cloneShadowTreeWithNewProps(const RootShadowNode &oldRootNode, const PropsMap &propsMap) {
62
+ ReanimatedSystraceSection s("ShadowTreeCloner::cloneShadowTreeWithNewProps");
70
63
 
71
- for (auto &[family, _] : propsMap) {
72
- const auto ancestors = family->getAncestors(oldRootNode);
73
-
74
- for (const auto &[parentNode, index] :
75
- std::ranges::reverse_view(ancestors)) {
76
- const auto parentFamily = &parentNode.get().getFamily();
77
- auto &affectedChildren = childrenMap[parentFamily];
78
-
79
- if (affectedChildren.contains(index)) {
80
- continue;
81
- }
64
+ ChildrenMap childrenMap;
82
65
 
83
- affectedChildren.insert(index);
66
+ {
67
+ ReanimatedSystraceSection s("ShadowTreeCloner::prepareChildrenMap");
68
+
69
+ for (auto &[family, _] : propsMap) {
70
+ const auto ancestors = family->getAncestors(oldRootNode);
71
+
72
+ // for (const auto &[parentNode, index] : std::ranges::reverse_view(ancestors)) {
73
+ // const auto parentFamily = &parentNode.get().getFamily();
74
+ // auto &affectedChildren = childrenMap[parentFamily];
75
+ //
76
+ // if (affectedChildren.contains(index)) {
77
+ // continue;
78
+ // }
79
+ //
80
+ // affectedChildren.insert(index);
81
+ // }
82
+ //TODO
83
+ for (auto it = ancestors.rbegin(); it != ancestors.rend(); ++it) {
84
+ const auto &[parentNode, index] = *it;
85
+
86
+ const auto parentFamily = &parentNode.get().getFamily();
87
+ auto &affectedChildren = childrenMap[parentFamily];
88
+
89
+ if (affectedChildren.find(index) != affectedChildren.end()) {
90
+ continue;
91
+ }
92
+
93
+ affectedChildren.insert(index);
94
+ }
84
95
  }
85
96
  }
86
97
 
@@ -91,5 +102,3 @@ RootShadowNode::Unshared cloneShadowTreeWithNewProps(
91
102
  }
92
103
 
93
104
  } // namespace reanimated
94
-
95
- #endif // RCT_NEW_ARCH_ENABLED
@@ -1,5 +1,4 @@
1
1
  #pragma once
2
- #ifdef RCT_NEW_ARCH_ENABLED
3
2
 
4
3
  #include <react/renderer/core/PropsParserContext.h>
5
4
  #include <react/renderer/uimanager/UIManager.h>
@@ -15,15 +14,9 @@ using namespace react;
15
14
 
16
15
  namespace reanimated {
17
16
 
18
- using PropsMap =
19
- std::unordered_map<const ShadowNodeFamily *, std::vector<RawProps>>;
20
- using ChildrenMap =
21
- std::unordered_map<const ShadowNodeFamily *, std::unordered_set<int>>;
17
+ using PropsMap = std::unordered_map<const ShadowNodeFamily *, std::vector<RawProps>>;
18
+ using ChildrenMap = std::unordered_map<const ShadowNodeFamily *, std::unordered_set<int>>;
22
19
 
23
- RootShadowNode::Unshared cloneShadowTreeWithNewProps(
24
- const RootShadowNode &oldRootNode,
25
- const PropsMap &propsMap);
20
+ RootShadowNode::Unshared cloneShadowTreeWithNewProps(const RootShadowNode &oldRootNode, const PropsMap &propsMap);
26
21
 
27
22
  } // namespace reanimated
28
-
29
- #endif // RCT_NEW_ARCH_ENABLED
@@ -0,0 +1,72 @@
1
+ #include <reanimated/Fabric/updates/AnimatedPropsRegistry.h>
2
+ #include <reanimated/Tools/FeatureFlags.h>
3
+
4
+ #include <memory>
5
+ #include <utility>
6
+
7
+ namespace reanimated {
8
+
9
+ #if REACT_NATIVE_MINOR_VERSION >= 81
10
+ static inline std::shared_ptr<const ShadowNode> shadowNodeFromValue(
11
+ jsi::Runtime &rt,
12
+ const jsi::Value &shadowNodeWrapper) {
13
+ return Bridging<std::shared_ptr<const ShadowNode>>::fromJs(rt, shadowNodeWrapper);
14
+ }
15
+ #endif
16
+
17
+ void AnimatedPropsRegistry::update(jsi::Runtime &rt, const jsi::Value &operations, const double timestamp) {
18
+ auto operationsArray = operations.asObject(rt).asArray(rt);
19
+
20
+ for (size_t i = 0, length = operationsArray.size(rt); i < length; ++i) {
21
+ auto item = operationsArray.getValueAtIndex(rt, i).asObject(rt);
22
+ auto shadowNodeWrapper = item.getProperty(rt, "shadowNodeWrapper");
23
+ auto shadowNode = shadowNodeFromValue(rt, shadowNodeWrapper);
24
+
25
+ const jsi::Value &updates = item.getProperty(rt, "updates");
26
+ addUpdatesToBatch(shadowNode, jsi::dynamicFromValue(rt, updates));
27
+
28
+ if constexpr (StaticFeatureFlags::getFlag("FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS")) {
29
+ timestampMap_[shadowNode->getTag()] = timestamp;
30
+ }
31
+ }
32
+ }
33
+
34
+ void AnimatedPropsRegistry::remove(const Tag tag) {
35
+ updatesRegistry_.erase(tag);
36
+ }
37
+
38
+ jsi::Value AnimatedPropsRegistry::getUpdatesOlderThanTimestamp(jsi::Runtime &rt, const double timestamp) {
39
+ std::vector<std::pair<Tag, std::reference_wrapper<const folly::dynamic>>> updates;
40
+
41
+ for (const auto &[viewTag, pair] : updatesRegistry_) {
42
+ if (timestampMap_.at(viewTag) < timestamp) {
43
+ updates.emplace_back(viewTag, std::cref(pair.second));
44
+ }
45
+ }
46
+
47
+ const jsi::Array array(rt, updates.size());
48
+ size_t i = 0;
49
+ for (const auto &[viewTag, styleProps] : updates) {
50
+ const jsi::Object item(rt);
51
+ item.setProperty(rt, "viewTag", viewTag);
52
+ item.setProperty(rt, "styleProps", jsi::valueFromDynamic(rt, styleProps.get()));
53
+ array.setValueAtIndex(rt, i++, item);
54
+ }
55
+
56
+ return jsi::Value(rt, array);
57
+ }
58
+
59
+ void AnimatedPropsRegistry::removeUpdatesOlderThanTimestamp(const double timestamp) {
60
+ for (auto it = timestampMap_.begin(); it != timestampMap_.end();) {
61
+ const auto viewTag = it->first;
62
+ const auto viewTimestamp = it->second;
63
+ if (viewTimestamp < timestamp) {
64
+ it = timestampMap_.erase(it);
65
+ updatesRegistry_.erase(viewTag);
66
+ } else {
67
+ it++;
68
+ }
69
+ }
70
+ }
71
+
72
+ } // namespace reanimated
@@ -0,0 +1,25 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/Fabric/updates/UpdatesRegistry.h>
4
+
5
+ #include <react/renderer/uimanager/UIManager.h>
6
+
7
+ #include <memory>
8
+ #include <string>
9
+ #include <unordered_map>
10
+ #include <vector>
11
+
12
+ namespace reanimated {
13
+
14
+ class AnimatedPropsRegistry : public UpdatesRegistry {
15
+ public:
16
+ void update(jsi::Runtime &rt, const jsi::Value &operations, double timestamp);
17
+ void remove(Tag tag) override;
18
+ jsi::Value getUpdatesOlderThanTimestamp(jsi::Runtime &rt, double timestamp);
19
+ void removeUpdatesOlderThanTimestamp(double timestamp);
20
+
21
+ private:
22
+ std::unordered_map<Tag, double> timestampMap_; // viewTag -> timestamp, protected by `mutex_`
23
+ };
24
+
25
+ } // namespace reanimated
@@ -0,0 +1,160 @@
1
+ #include <reanimated/Fabric/updates/UpdatesRegistry.h>
2
+
3
+ #include <memory>
4
+ #include <string>
5
+ #include <unordered_set>
6
+ #include <utility>
7
+ #include <vector>
8
+
9
+ namespace reanimated {
10
+
11
+ std::lock_guard<std::mutex> UpdatesRegistry::lock() const {
12
+ return std::lock_guard<std::mutex>{mutex_};
13
+ }
14
+
15
+ bool UpdatesRegistry::isEmpty() const {
16
+ return updatesRegistry_.empty();
17
+ }
18
+
19
+ folly::dynamic UpdatesRegistry::get(const Tag tag) const {
20
+ std::lock_guard<std::mutex> lock{mutex_};
21
+
22
+ auto it = updatesRegistry_.find(tag);
23
+ if (it == updatesRegistry_.cend()) {
24
+ return nullptr;
25
+ }
26
+ return it->second.second;
27
+ }
28
+
29
+ void UpdatesRegistry::flushUpdates(UpdatesBatch &updatesBatch) {
30
+ auto copiedUpdatesBatch = std::move(updatesBatch_);
31
+ updatesBatch_.clear();
32
+
33
+ // Store all updates in the registry for later use in the commit hook
34
+ flushUpdatesToRegistry(copiedUpdatesBatch);
35
+ // Flush the updates to the updatesBatch used to apply current changes
36
+ for (auto &[shadowNode, props] : copiedUpdatesBatch) {
37
+ updatesBatch.emplace_back(shadowNode, std::move(props));
38
+ }
39
+ }
40
+
41
+ void UpdatesRegistry::collectProps(PropsMap &propsMap) {
42
+ std::lock_guard<std::mutex> lock{mutex_};
43
+
44
+ auto copiedRegistry = updatesRegistry_;
45
+ for (const auto &[tag, pair] : copiedRegistry) {
46
+ const auto &[shadowNode, props] = pair;
47
+ auto &family = shadowNode->getFamily();
48
+ auto it = propsMap.find(&family);
49
+
50
+ if (it == propsMap.cend()) {
51
+ auto propsVector = std::vector<RawProps>{};
52
+ propsVector.emplace_back(RawProps(props));
53
+ propsMap.emplace(&family, propsVector);
54
+ } else {
55
+ it->second.push_back(RawProps(props));
56
+ }
57
+ }
58
+ }
59
+
60
+ void UpdatesRegistry::addUpdatesToBatch(
61
+ const std::shared_ptr<const ShadowNode> &shadowNode,
62
+ const folly::dynamic &props) {
63
+ updatesBatch_.emplace_back(shadowNode, props);
64
+ }
65
+
66
+ void UpdatesRegistry::setInUpdatesRegistry(
67
+ const std::shared_ptr<const ShadowNode> &shadowNode,
68
+ const folly::dynamic &props) {
69
+ const auto tag = shadowNode->getTag();
70
+ #ifdef ANDROID
71
+ updatePropsToRevert(tag, &props);
72
+ #endif
73
+ updatesRegistry_[tag] = std::make_pair(shadowNode, props);
74
+ }
75
+
76
+ folly::dynamic UpdatesRegistry::getUpdatesFromRegistry(const Tag tag) const {
77
+ auto it = updatesRegistry_.find(tag);
78
+ if (it == updatesRegistry_.cend()) {
79
+ return folly::dynamic();
80
+ }
81
+ return it->second.second;
82
+ }
83
+
84
+ void UpdatesRegistry::removeFromUpdatesRegistry(const Tag tag) {
85
+ #ifdef ANDROID
86
+ updatePropsToRevert(tag);
87
+ #endif
88
+ updatesRegistry_.erase(tag);
89
+ }
90
+
91
+ void UpdatesRegistry::flushUpdatesToRegistry(const UpdatesBatch &updatesBatch) {
92
+ for (auto &[shadowNode, props] : updatesBatch) {
93
+ const auto tag = shadowNode->getTag();
94
+ auto it = updatesRegistry_.find(tag);
95
+
96
+ if (it == updatesRegistry_.cend()) {
97
+ updatesRegistry_[tag] = std::make_pair(shadowNode, props);
98
+ } else {
99
+ it->second.second.update(props);
100
+ }
101
+ }
102
+ }
103
+
104
+ #ifdef ANDROID
105
+
106
+ bool UpdatesRegistry::hasPropsToRevert() const {
107
+ return !propsToRevertMap_.empty();
108
+ }
109
+
110
+ void UpdatesRegistry::collectPropsToRevert(PropsToRevertMap &propsToRevertMap) {
111
+ std::lock_guard<std::mutex> lock{mutex_};
112
+
113
+ for (const auto &[tag, pair] : propsToRevertMap_) {
114
+ const auto &[shadowNode, props] = pair;
115
+ const auto it = propsToRevertMap.find(tag);
116
+ if (it == propsToRevertMap.end()) {
117
+ propsToRevertMap[tag] = {shadowNode, props};
118
+ } else {
119
+ it->second.props.insert(props.begin(), props.end());
120
+ }
121
+ }
122
+
123
+ propsToRevertMap_.clear();
124
+ }
125
+
126
+ void UpdatesRegistry::updatePropsToRevert(const Tag tag, const folly::dynamic *newProps) {
127
+ auto it = updatesRegistry_.find(tag);
128
+ if (it == updatesRegistry_.end()) {
129
+ return;
130
+ }
131
+
132
+ const auto &shadowNode = it->second.first;
133
+ const auto &registryProps = it->second.second;
134
+ if (propsToRevertMap_.find(tag) == propsToRevertMap_.end()) {
135
+ propsToRevertMap_[tag] = {shadowNode, std::unordered_set<std::string>()};
136
+ }
137
+
138
+ if (newProps == nullptr) {
139
+ // If newProps is not provided, revert all props from registry
140
+ for (const auto &propName : registryProps.keys()) {
141
+ propsToRevertMap_[tag].props.emplace(propName.asString());
142
+ }
143
+ } else {
144
+ // If newProps is provided, revert only props that are in registry but not
145
+ // in newProps
146
+ for (const auto &propName : registryProps.keys()) {
147
+ if (newProps->find(propName) == newProps->items().end()) {
148
+ propsToRevertMap_[tag].props.emplace(propName.asString());
149
+ }
150
+ }
151
+ }
152
+
153
+ if (propsToRevertMap_[tag].props.empty()) {
154
+ propsToRevertMap_.erase(tag);
155
+ }
156
+ }
157
+
158
+ #endif
159
+
160
+ } // namespace reanimated