@react-native-ohos/react-native-reanimated 3.18.2-rc.2 → 4.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/compatibility.json +161 -0
  2. package/harmony/reanimated/BuildProfile.ets +16 -16
  3. package/harmony/reanimated/build-profile.json5 +18 -11
  4. package/harmony/reanimated/oh-package.json5 +12 -11
  5. package/harmony/reanimated/src/main/cpp/CMakeLists.txt +31 -40
  6. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +81 -86
  7. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +46 -47
  8. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -0
  9. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -0
  10. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -0
  11. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -0
  12. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -0
  13. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -0
  14. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -0
  15. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -0
  16. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -0
  17. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -0
  18. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -0
  19. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -0
  20. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -0
  21. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -0
  22. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -0
  23. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -0
  24. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -0
  25. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +93 -0
  26. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -0
  27. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -0
  28. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -0
  29. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -0
  30. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -0
  31. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -0
  32. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +44 -0
  33. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -0
  34. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -0
  35. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -0
  36. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -0
  37. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -0
  38. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -0
  39. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -0
  40. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -0
  41. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -0
  42. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -0
  43. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -0
  44. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -0
  45. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -0
  46. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -0
  47. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -0
  48. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -0
  49. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -0
  50. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -0
  51. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -0
  52. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -0
  53. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -0
  54. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -0
  55. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -0
  56. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -0
  57. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -0
  58. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -0
  59. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -0
  60. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -0
  61. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -0
  62. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -0
  63. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -0
  64. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -0
  65. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -0
  66. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -0
  67. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -0
  68. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -0
  69. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -0
  70. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -0
  71. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -0
  72. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -0
  73. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -0
  74. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -0
  75. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -0
  76. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -0
  77. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -0
  78. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -0
  79. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -0
  80. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -0
  81. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -0
  82. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -0
  83. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -0
  84. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -0
  85. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -0
  86. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -0
  87. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -0
  88. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -0
  89. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -0
  90. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -0
  91. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -0
  92. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -0
  93. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -0
  94. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -0
  95. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -0
  96. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -0
  97. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -0
  98. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -0
  99. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -0
  100. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -0
  101. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -0
  102. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -0
  103. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -0
  104. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -0
  105. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -0
  106. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -0
  107. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -0
  108. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -0
  109. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -0
  110. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -0
  111. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -0
  112. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -0
  113. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -0
  114. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -0
  115. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -0
  116. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -0
  117. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -0
  118. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -0
  119. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -0
  120. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -0
  121. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -0
  122. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -0
  123. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -0
  124. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -0
  125. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -0
  126. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -0
  127. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -0
  128. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -0
  129. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -0
  130. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -0
  131. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -0
  132. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -0
  133. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -0
  134. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -0
  135. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -0
  136. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -0
  137. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -0
  138. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -0
  139. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -0
  140. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -0
  141. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -0
  142. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -0
  143. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -0
  144. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -0
  145. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -0
  146. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -0
  147. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +110 -0
  148. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -0
  149. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -0
  150. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -0
  151. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -0
  152. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -0
  153. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -0
  154. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -0
  155. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -0
  156. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -0
  157. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +113 -101
  158. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +49 -51
  159. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +46 -49
  160. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +56 -96
  161. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +37 -33
  162. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +104 -95
  163. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +22 -29
  164. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -0
  165. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -0
  166. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -0
  167. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -0
  168. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -0
  169. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -0
  170. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +11 -9
  171. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +137 -232
  172. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +82 -90
  173. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -0
  174. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -0
  175. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -0
  176. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -0
  177. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/{LayoutAnimationsProxy.cpp → LayoutAnimationsProxy_Legacy.cpp} +897 -870
  178. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -0
  179. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +31 -91
  180. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +146 -176
  181. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -0
  182. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -0
  183. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -0
  184. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -0
  185. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -0
  186. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +1376 -971
  187. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +228 -252
  188. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +183 -231
  189. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +93 -109
  190. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +54 -56
  191. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +28 -20
  192. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +58 -70
  193. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +31 -35
  194. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -0
  195. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -0
  196. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +67 -98
  197. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +114 -135
  198. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -0
  199. package/harmony/reanimated/src/main/cpp/Common/cpp/{worklets → reanimated}/Tools/ReanimatedVersion.h +18 -19
  200. package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +60 -85
  201. package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +1 -0
  202. package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +0 -3
  203. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +266 -0
  204. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -0
  205. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +36 -0
  206. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -0
  207. package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +3 -3
  208. package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +5 -1
  209. package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +1 -4
  210. package/harmony/reanimated/src/main/module.json5 +12 -12
  211. package/harmony/reanimated/src/main/resources/base/element/color.json +7 -7
  212. package/harmony/reanimated/src/main/resources/base/element/string.json +15 -15
  213. package/harmony/reanimated/src/main/resources/base/profile/main_pages.json +5 -5
  214. package/harmony/reanimated/src/main/resources/en_US/element/string.json +15 -15
  215. package/harmony/reanimated/src/main/resources/zh_CN/element/string.json +15 -15
  216. package/harmony/reanimated/ts.ts +6 -6
  217. package/harmony/reanimated.har +0 -0
  218. package/package.json +68 -50
  219. package/scripts/deploy.js +191 -0
  220. package/scripts/set-reanimated-version.js +37 -0
  221. package/scripts/update-version.js +119 -0
  222. package/scripts/validate-react-native-version.js +46 -0
  223. package/scripts/validate-worklets-build.js +17 -0
  224. package/scripts/validate-worklets-version.js +79 -0
  225. package/scripts/worklets-version.json +4 -0
  226. package/LICENSE +0 -21
  227. package/README.OpenSource +0 -11
  228. package/README.md +0 -10
  229. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
  230. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
  231. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
  232. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
  233. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
  234. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
  235. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
  236. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
  237. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
  238. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
  239. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
  240. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
  241. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
  242. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
  243. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
  244. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
  245. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
  246. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
  247. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
  248. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
  249. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
  250. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
  251. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
  252. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
  253. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
  254. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
  255. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
  256. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
  257. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
  258. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
  259. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
  260. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
  261. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
  262. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
  263. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
  264. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
  265. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
  266. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
  267. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
  268. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
  269. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
  270. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
  271. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -173
  272. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
  273. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
  274. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -189
  275. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
  276. package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
  277. package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
  278. package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
  279. package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
  280. package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
  281. package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
  282. package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
@@ -1,95 +1,104 @@
1
- #ifdef RCT_NEW_ARCH_ENABLED
2
-
3
- #include <reanimated/Fabric/ShadowTreeCloner.h>
4
-
5
- #include <ranges>
6
- #include <utility>
7
-
8
- namespace reanimated {
9
-
10
- Props::Shared mergeProps(
11
- const ShadowNode &shadowNode,
12
- const PropsMap &propsMap,
13
- const ShadowNodeFamily &family) {
14
- const auto it = propsMap.find(&family);
15
-
16
- if (it == propsMap.end()) {
17
- return ShadowNodeFragment::propsPlaceholder();
18
- }
19
-
20
- PropsParserContext propsParserContext{
21
- shadowNode.getSurfaceId(), *shadowNode.getContextContainer()};
22
- const auto &propsVector = it->second;
23
- auto newProps = shadowNode.getProps();
24
-
25
- #ifdef ANDROID
26
- if (propsVector.size() > 1) {
27
- folly::dynamic newPropsDynamic = folly::dynamic::object;
28
- for (const auto &props : propsVector) {
29
- newPropsDynamic = folly::dynamic::merge(
30
- props.operator folly::dynamic(), newPropsDynamic);
31
- }
32
- return shadowNode.getComponentDescriptor().cloneProps(
33
- propsParserContext, newProps, RawProps(newPropsDynamic));
34
- }
35
- #endif
36
-
37
- for (const auto &props : propsVector) {
38
- newProps = shadowNode.getComponentDescriptor().cloneProps(
39
- propsParserContext, newProps, RawProps(props));
40
- }
41
-
42
- return newProps;
43
- }
44
-
45
- ShadowNode::Unshared cloneShadowTreeWithNewPropsRecursive(
46
- const ShadowNode &shadowNode,
47
- const ChildrenMap &childrenMap,
48
- const PropsMap &propsMap) {
49
- const auto family = &shadowNode.getFamily();
50
- const auto affectedChildrenIt = childrenMap.find(family);
51
- auto children = shadowNode.getChildren();
52
-
53
- if (affectedChildrenIt != childrenMap.end()) {
54
- for (const auto index : affectedChildrenIt->second) {
55
- children[index] = cloneShadowTreeWithNewPropsRecursive(
56
- *children[index], childrenMap, propsMap);
57
- }
58
- }
59
-
60
- return shadowNode.clone(
61
- {mergeProps(shadowNode, propsMap, *family),
62
- std::make_shared<ShadowNode::ListOfShared>(children),
63
- shadowNode.getState()});
64
- }
65
-
66
- RootShadowNode::Unshared cloneShadowTreeWithNewProps(
67
- const RootShadowNode &oldRootNode,
68
- const PropsMap &propsMap) {
69
- ChildrenMap childrenMap;
70
-
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
- }
82
-
83
- affectedChildren.insert(index);
84
- }
85
- }
86
-
87
- // This cast is safe, because this function returns a clone
88
- // of the oldRootNode, which is an instance of RootShadowNode
89
- return std::static_pointer_cast<RootShadowNode>(
90
- cloneShadowTreeWithNewPropsRecursive(oldRootNode, childrenMap, propsMap));
91
- }
92
-
93
- } // namespace reanimated
94
-
95
- #endif // RCT_NEW_ARCH_ENABLED
1
+ #include <reanimated/Fabric/ShadowTreeCloner.h>
2
+ #include <reanimated/Tools/ReanimatedSystraceSection.h>
3
+
4
+ #include <memory>
5
+ #include <ranges>
6
+ #include <utility>
7
+
8
+ namespace reanimated {
9
+
10
+ Props::Shared mergeProps(const ShadowNode &shadowNode, const PropsMap &propsMap, const ShadowNodeFamily &family) {
11
+ ReanimatedSystraceSection s("ShadowTreeCloner::mergeProps");
12
+
13
+ const auto it = propsMap.find(&family);
14
+
15
+ if (it == propsMap.end()) {
16
+ return ShadowNodeFragment::propsPlaceholder();
17
+ }
18
+
19
+ PropsParserContext propsParserContext{shadowNode.getSurfaceId(), *shadowNode.getContextContainer()};
20
+ const auto &propsVector = it->second;
21
+ auto newProps = shadowNode.getProps();
22
+
23
+ #ifdef ANDROID
24
+ if (propsVector.size() > 1) {
25
+ folly::dynamic newPropsDynamic = folly::dynamic::object;
26
+ for (const auto &props : propsVector) {
27
+ newPropsDynamic = folly::dynamic::merge(props.operator folly::dynamic(), newPropsDynamic);
28
+ }
29
+ return shadowNode.getComponentDescriptor().cloneProps(propsParserContext, newProps, RawProps(newPropsDynamic));
30
+ }
31
+ #endif
32
+
33
+ for (const auto &props : propsVector) {
34
+ newProps = shadowNode.getComponentDescriptor().cloneProps(propsParserContext, newProps, RawProps(props));
35
+ }
36
+
37
+ return newProps;
38
+ }
39
+
40
+ std::shared_ptr<ShadowNode> cloneShadowTreeWithNewPropsRecursive(
41
+ const ShadowNode &shadowNode,
42
+ const ChildrenMap &childrenMap,
43
+ const PropsMap &propsMap) {
44
+ const auto family = &shadowNode.getFamily();
45
+ const auto affectedChildrenIt = childrenMap.find(family);
46
+ auto children = shadowNode.getChildren();
47
+
48
+ if (affectedChildrenIt != childrenMap.end()) {
49
+ for (const auto index : affectedChildrenIt->second) {
50
+ children[index] = cloneShadowTreeWithNewPropsRecursive(*children[index], childrenMap, propsMap);
51
+ }
52
+ }
53
+
54
+ return shadowNode.clone(
55
+ {mergeProps(shadowNode, propsMap, *family),
56
+ std::make_shared<std::vector<std::shared_ptr<const ShadowNode>>>(children),
57
+ shadowNode.getState(),
58
+ false});
59
+ }
60
+
61
+ RootShadowNode::Unshared cloneShadowTreeWithNewProps(const RootShadowNode &oldRootNode, const PropsMap &propsMap) {
62
+ ReanimatedSystraceSection s("ShadowTreeCloner::cloneShadowTreeWithNewProps");
63
+
64
+ ChildrenMap childrenMap;
65
+
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
+ }
95
+ }
96
+ }
97
+
98
+ // This cast is safe, because this function returns a clone
99
+ // of the oldRootNode, which is an instance of RootShadowNode
100
+ return std::static_pointer_cast<RootShadowNode>(
101
+ cloneShadowTreeWithNewPropsRecursive(oldRootNode, childrenMap, propsMap));
102
+ }
103
+
104
+ } // namespace reanimated
@@ -1,29 +1,22 @@
1
- #pragma once
2
- #ifdef RCT_NEW_ARCH_ENABLED
3
-
4
- #include <react/renderer/core/PropsParserContext.h>
5
- #include <react/renderer/uimanager/UIManager.h>
6
-
7
- #include <memory>
8
- #include <type_traits>
9
- #include <unordered_map>
10
- #include <unordered_set>
11
- #include <vector>
12
-
13
- using namespace facebook;
14
- using namespace react;
15
-
16
- namespace reanimated {
17
-
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>>;
22
-
23
- RootShadowNode::Unshared cloneShadowTreeWithNewProps(
24
- const RootShadowNode &oldRootNode,
25
- const PropsMap &propsMap);
26
-
27
- } // namespace reanimated
28
-
29
- #endif // RCT_NEW_ARCH_ENABLED
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/PropsParserContext.h>
4
+ #include <react/renderer/uimanager/UIManager.h>
5
+
6
+ #include <memory>
7
+ #include <type_traits>
8
+ #include <unordered_map>
9
+ #include <unordered_set>
10
+ #include <vector>
11
+
12
+ using namespace facebook;
13
+ using namespace react;
14
+
15
+ namespace reanimated {
16
+
17
+ using PropsMap = std::unordered_map<const ShadowNodeFamily *, std::vector<RawProps>>;
18
+ using ChildrenMap = std::unordered_map<const ShadowNodeFamily *, std::unordered_set<int>>;
19
+
20
+ RootShadowNode::Unshared cloneShadowTreeWithNewProps(const RootShadowNode &oldRootNode, const PropsMap &propsMap);
21
+
22
+ } // namespace reanimated
@@ -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
@@ -0,0 +1,71 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/Fabric/ShadowTreeCloner.h>
4
+
5
+ #include <react/renderer/core/ShadowNode.h>
6
+
7
+ #include <jsi/jsi.h>
8
+ #include <memory>
9
+ #include <string>
10
+ #include <unordered_map>
11
+ #include <unordered_set>
12
+ #include <utility>
13
+ #include <vector>
14
+
15
+ namespace reanimated {
16
+
17
+ using namespace facebook;
18
+ using namespace react;
19
+
20
+ using UpdatesBatch = std::vector<std::pair<std::shared_ptr<const ShadowNode>, folly::dynamic>>;
21
+ using RegistryMap = std::unordered_map<Tag, std::pair<std::shared_ptr<const ShadowNode>, folly::dynamic>>;
22
+
23
+ #ifdef ANDROID
24
+ struct PropsToRevert {
25
+ std::shared_ptr<const ShadowNode> shadowNode;
26
+ std::unordered_set<std::string> props;
27
+ };
28
+
29
+ using PropsToRevertMap = std::unordered_map<Tag, PropsToRevert>;
30
+ #endif
31
+
32
+ class UpdatesRegistry {
33
+ public:
34
+ virtual ~UpdatesRegistry() {}
35
+
36
+ std::lock_guard<std::mutex> lock() const;
37
+
38
+ virtual bool isEmpty() const;
39
+ folly::dynamic get(Tag tag) const;
40
+ virtual void remove(Tag tag) = 0;
41
+
42
+ #ifdef ANDROID
43
+ bool hasPropsToRevert() const;
44
+ void collectPropsToRevert(PropsToRevertMap &propsToRevertMap);
45
+ #endif
46
+
47
+ void flushUpdates(UpdatesBatch &updatesBatch);
48
+ void collectProps(PropsMap &propsMap);
49
+
50
+ protected:
51
+ mutable std::mutex mutex_;
52
+ RegistryMap updatesRegistry_;
53
+
54
+ void addUpdatesToBatch(const std::shared_ptr<const ShadowNode> &shadowNode, const folly::dynamic &props);
55
+ folly::dynamic getUpdatesFromRegistry(const Tag tag) const;
56
+ void setInUpdatesRegistry(const std::shared_ptr<const ShadowNode> &shadowNode, const folly::dynamic &props);
57
+ void removeFromUpdatesRegistry(Tag tag);
58
+
59
+ private:
60
+ UpdatesBatch updatesBatch_;
61
+
62
+ void flushUpdatesToRegistry(const UpdatesBatch &updatesBatch);
63
+
64
+ #ifdef ANDROID
65
+ PropsToRevertMap propsToRevertMap_;
66
+
67
+ void updatePropsToRevert(Tag tag, const folly::dynamic *newProps = nullptr);
68
+ #endif
69
+ };
70
+
71
+ } // namespace reanimated