@react-native-ohos/react-native-reanimated 3.18.1-rc.6 → 4.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/compatibility.json +161 -0
  2. package/harmony/reanimated/BuildProfile.ets +1 -1
  3. package/harmony/reanimated/build-profile.json5 +8 -1
  4. package/harmony/reanimated/oh-package.json5 +3 -2
  5. package/harmony/reanimated/src/main/cpp/CMakeLists.txt +31 -40
  6. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +11 -16
  7. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +3 -4
  8. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -0
  9. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -0
  10. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -0
  11. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -0
  12. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -0
  13. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -0
  14. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -0
  15. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -0
  16. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -0
  17. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -0
  18. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -0
  19. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -0
  20. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -0
  21. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -0
  22. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -0
  23. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -0
  24. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -0
  25. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +93 -0
  26. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -0
  27. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -0
  28. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -0
  29. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -0
  30. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -0
  31. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -0
  32. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +44 -0
  33. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -0
  34. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -0
  35. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -0
  36. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -0
  37. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -0
  38. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -0
  39. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -0
  40. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -0
  41. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -0
  42. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -0
  43. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -0
  44. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -0
  45. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -0
  46. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -0
  47. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -0
  48. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -0
  49. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -0
  50. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -0
  51. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -0
  52. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -0
  53. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -0
  54. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -0
  55. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -0
  56. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -0
  57. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -0
  58. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -0
  59. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -0
  60. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -0
  61. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -0
  62. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -0
  63. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -0
  64. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -0
  65. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -0
  66. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -0
  67. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -0
  68. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -0
  69. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -0
  70. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -0
  71. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -0
  72. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -0
  73. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -0
  74. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -0
  75. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -0
  76. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -0
  77. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -0
  78. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -0
  79. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -0
  80. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -0
  81. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -0
  82. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -0
  83. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -0
  84. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -0
  85. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -0
  86. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -0
  87. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -0
  88. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -0
  89. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -0
  90. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -0
  91. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -0
  92. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -0
  93. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -0
  94. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -0
  95. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -0
  96. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -0
  97. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -0
  98. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -0
  99. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -0
  100. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -0
  101. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -0
  102. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -0
  103. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -0
  104. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -0
  105. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -0
  106. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -0
  107. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -0
  108. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -0
  109. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -0
  110. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -0
  111. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -0
  112. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -0
  113. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -0
  114. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -0
  115. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -0
  116. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -0
  117. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -0
  118. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -0
  119. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -0
  120. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -0
  121. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -0
  122. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -0
  123. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -0
  124. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -0
  125. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -0
  126. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -0
  127. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -0
  128. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -0
  129. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -0
  130. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -0
  131. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -0
  132. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -0
  133. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -0
  134. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -0
  135. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -0
  136. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -0
  137. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -0
  138. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -0
  139. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -0
  140. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -0
  141. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -0
  142. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -0
  143. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -0
  144. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -0
  145. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -0
  146. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -0
  147. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +110 -0
  148. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -0
  149. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -0
  150. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -0
  151. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -0
  152. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -0
  153. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -0
  154. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -0
  155. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -0
  156. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -0
  157. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +51 -39
  158. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +13 -15
  159. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +0 -3
  160. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +22 -53
  161. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +12 -8
  162. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +46 -37
  163. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +3 -10
  164. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -0
  165. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -0
  166. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -0
  167. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -0
  168. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -0
  169. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -0
  170. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +4 -2
  171. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +62 -157
  172. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +38 -46
  173. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -0
  174. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -0
  175. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -0
  176. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -0
  177. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/{LayoutAnimationsProxy.cpp → LayoutAnimationsProxy_Legacy.cpp} +303 -276
  178. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -0
  179. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +5 -65
  180. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +52 -82
  181. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -0
  182. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -0
  183. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -0
  184. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -0
  185. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -0
  186. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +957 -552
  187. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +87 -111
  188. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +115 -163
  189. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +38 -54
  190. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +34 -36
  191. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +8 -0
  192. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +46 -58
  193. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +5 -9
  194. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -0
  195. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -0
  196. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +26 -57
  197. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +12 -33
  198. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -0
  199. package/harmony/reanimated/src/main/cpp/Common/cpp/{worklets → reanimated}/Tools/ReanimatedVersion.h +3 -4
  200. package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +60 -85
  201. package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +1 -0
  202. package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +0 -3
  203. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +266 -0
  204. package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -0
  205. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +36 -0
  206. package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -0
  207. package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +3 -3
  208. package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +12 -1
  209. package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +1 -4
  210. package/harmony/reanimated.har +0 -0
  211. package/package.json +36 -18
  212. package/scripts/deploy.js +191 -0
  213. package/scripts/set-reanimated-version.js +37 -0
  214. package/scripts/update-version.js +119 -0
  215. package/scripts/validate-react-native-version.js +46 -0
  216. package/scripts/validate-worklets-build.js +17 -0
  217. package/scripts/validate-worklets-version.js +79 -0
  218. package/scripts/worklets-version.json +4 -0
  219. package/LICENSE +0 -21
  220. package/README.OpenSource +0 -11
  221. package/README.md +0 -10
  222. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
  223. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
  224. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
  225. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
  226. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
  227. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
  228. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
  229. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
  230. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
  231. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
  232. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
  233. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
  234. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
  235. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
  236. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
  237. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
  238. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
  239. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
  240. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
  241. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
  242. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
  243. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
  244. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
  245. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
  246. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
  247. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
  248. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
  249. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
  250. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
  251. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
  252. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
  253. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
  254. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
  255. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
  256. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
  257. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
  258. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
  259. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
  260. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
  261. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
  262. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
  263. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
  264. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -155
  265. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
  266. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
  267. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -182
  268. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
  269. package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
  270. package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
  271. package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
  272. package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
  273. package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
  274. package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
  275. package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
@@ -0,0 +1,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
@@ -0,0 +1,161 @@
1
+ #include <reanimated/Fabric/updates/UpdatesRegistryManager.h>
2
+ #include <reanimated/Tools/FeatureFlags.h>
3
+
4
+ #include <memory>
5
+ #include <utility>
6
+ #include <vector>
7
+
8
+ namespace reanimated {
9
+
10
+ UpdatesRegistryManager::UpdatesRegistryManager(const std::shared_ptr<StaticPropsRegistry> &staticPropsRegistry)
11
+ : staticPropsRegistry_(staticPropsRegistry) {}
12
+
13
+ std::lock_guard<std::mutex> UpdatesRegistryManager::lock() const {
14
+ return std::lock_guard<std::mutex>{mutex_};
15
+ }
16
+
17
+ void UpdatesRegistryManager::addRegistry(const std::shared_ptr<UpdatesRegistry> &registry) {
18
+ if (!registry) {
19
+ throw std::invalid_argument("[Reanimated] Registry cannot be null");
20
+ }
21
+ registries_.push_back(registry);
22
+ }
23
+
24
+ void UpdatesRegistryManager::pauseReanimatedCommits() {
25
+ if constexpr (!StaticFeatureFlags::getFlag("DISABLE_COMMIT_PAUSING_MECHANISM")) {
26
+ isPaused_ = true;
27
+ }
28
+ }
29
+
30
+ bool UpdatesRegistryManager::shouldReanimatedSkipCommit() {
31
+ return isPaused_;
32
+ }
33
+
34
+ void UpdatesRegistryManager::unpauseReanimatedCommits() {
35
+ isPaused_ = false;
36
+ }
37
+
38
+ void UpdatesRegistryManager::pleaseCommitAfterPause() {
39
+ shouldCommitAfterPause_ = true;
40
+ }
41
+
42
+ void UpdatesRegistryManager::cancelCommitAfterPause() {
43
+ shouldCommitAfterPause_ = false;
44
+ }
45
+
46
+ bool UpdatesRegistryManager::shouldCommitAfterPause() {
47
+ return shouldCommitAfterPause_.exchange(false);
48
+ }
49
+
50
+ void UpdatesRegistryManager::markNodeAsRemovable(const std::shared_ptr<const ShadowNode> &shadowNode) {
51
+ removableShadowNodes_[shadowNode->getTag()] = shadowNode;
52
+ }
53
+
54
+ void UpdatesRegistryManager::unmarkNodeAsRemovable(Tag viewTag) {
55
+ removableShadowNodes_.erase(viewTag);
56
+ }
57
+
58
+ void UpdatesRegistryManager::handleNodeRemovals(const RootShadowNode &rootShadowNode) {
59
+ RemovableShadowNodes remainingShadowNodes;
60
+
61
+ for (const auto &[tag, shadowNode] : removableShadowNodes_) {
62
+ if (!shadowNode) {
63
+ continue;
64
+ }
65
+
66
+ if (shadowNode->getFamily().getAncestors(rootShadowNode).empty()) {
67
+ for (auto &registry : registries_) {
68
+ registry->remove(tag);
69
+ }
70
+ staticPropsRegistry_->remove(tag);
71
+ } else {
72
+ remainingShadowNodes.emplace(tag, shadowNode);
73
+ }
74
+ }
75
+
76
+ removableShadowNodes_ = std::move(remainingShadowNodes);
77
+ }
78
+
79
+ PropsMap UpdatesRegistryManager::collectProps() {
80
+ PropsMap propsMap;
81
+ for (auto &registry : registries_) {
82
+ registry->collectProps(propsMap);
83
+ }
84
+ return propsMap;
85
+ }
86
+
87
+ #ifdef ANDROID
88
+
89
+ bool UpdatesRegistryManager::hasPropsToRevert() {
90
+ for (auto &registry : registries_) {
91
+ if (registry->hasPropsToRevert()) {
92
+ return true;
93
+ }
94
+ }
95
+ return false;
96
+ }
97
+
98
+ void UpdatesRegistryManager::addToPropsMap(
99
+ PropsMap &propsMap,
100
+ const std::shared_ptr<const ShadowNode> &shadowNode,
101
+ const folly::dynamic &props) {
102
+ auto &family = shadowNode->getFamily();
103
+ auto it = propsMap.find(&family);
104
+
105
+ if (it == propsMap.cend()) {
106
+ auto propsVector = std::vector<RawProps>{};
107
+ propsVector.emplace_back(props);
108
+ propsMap.emplace(&family, propsVector);
109
+ } else {
110
+ it->second.emplace_back(props);
111
+ }
112
+ }
113
+
114
+ void UpdatesRegistryManager::collectPropsToRevertBySurface(std::unordered_map<SurfaceId, PropsMap> &propsMapBySurface) {
115
+ for (const auto &registry : registries_) {
116
+ registry->collectPropsToRevert(propsToRevertMap_);
117
+ }
118
+
119
+ for (const auto &[tag, pair] : propsToRevertMap_) {
120
+ const auto &[shadowNode, props] = pair;
121
+ const auto &staticStyle = staticPropsRegistry_->get(tag);
122
+ folly::dynamic filteredStyle = folly::dynamic::object;
123
+
124
+ for (const auto &propName : props) {
125
+ if (!staticStyle.isNull() && staticStyle.count(propName) > 0) {
126
+ filteredStyle[propName] = staticStyle[propName];
127
+ continue;
128
+ }
129
+
130
+ const auto &componentName = shadowNode->getComponentName();
131
+ const auto &interpolators = getComponentInterpolators(componentName);
132
+ const auto &it = interpolators.find(propName);
133
+
134
+ if (it != interpolators.end()) {
135
+ filteredStyle[propName] = it->second->getDefaultValue().toDynamic();
136
+ continue;
137
+ }
138
+
139
+ filteredStyle[propName] = nullptr;
140
+ }
141
+
142
+ const auto &surfaceId = shadowNode->getSurfaceId();
143
+ auto &propsMap = propsMapBySurface[surfaceId];
144
+
145
+ addToPropsMap(propsMap, shadowNode, filteredStyle);
146
+ }
147
+ }
148
+
149
+ void UpdatesRegistryManager::clearPropsToRevert(const SurfaceId surfaceId) {
150
+ for (auto it = propsToRevertMap_.begin(); it != propsToRevertMap_.end();) {
151
+ if (it->second.shadowNode->getSurfaceId() == surfaceId) {
152
+ it = propsToRevertMap_.erase(it);
153
+ } else {
154
+ ++it;
155
+ }
156
+ }
157
+ }
158
+
159
+ #endif
160
+
161
+ } // namespace reanimated
@@ -0,0 +1,65 @@
1
+ #pragma once
2
+
3
+ #include <reanimated/CSS/InterpolatorRegistry.h>
4
+ #include <reanimated/CSS/registries/StaticPropsRegistry.h>
5
+
6
+ #include <reanimated/Fabric/ShadowTreeCloner.h>
7
+ #include <reanimated/Fabric/updates/UpdatesRegistry.h>
8
+
9
+ #include <memory>
10
+ #include <unordered_map>
11
+ #include <utility>
12
+ #include <vector>
13
+
14
+ namespace reanimated {
15
+
16
+ using namespace css;
17
+
18
+ class UpdatesRegistryManager {
19
+ public:
20
+ explicit UpdatesRegistryManager(const std::shared_ptr<StaticPropsRegistry> &staticPropsRegistry);
21
+
22
+ std::lock_guard<std::mutex> lock() const;
23
+
24
+ // TODO - ensure that other sublibraries can easily hook into this registry
25
+ // manager (e.g. add priority to registries)
26
+ void addRegistry(const std::shared_ptr<UpdatesRegistry> &registry);
27
+
28
+ void pauseReanimatedCommits();
29
+ bool shouldReanimatedSkipCommit();
30
+ void unpauseReanimatedCommits();
31
+
32
+ void pleaseCommitAfterPause();
33
+ bool shouldCommitAfterPause();
34
+ void cancelCommitAfterPause();
35
+
36
+ void markNodeAsRemovable(const std::shared_ptr<const ShadowNode> &shadowNode);
37
+ void unmarkNodeAsRemovable(Tag viewTag);
38
+ void handleNodeRemovals(const RootShadowNode &rootShadowNode);
39
+ PropsMap collectProps();
40
+
41
+ #ifdef ANDROID
42
+ bool hasPropsToRevert();
43
+ void collectPropsToRevertBySurface(std::unordered_map<SurfaceId, PropsMap> &propsMapBySurface);
44
+ void clearPropsToRevert(SurfaceId surfaceId);
45
+ #endif
46
+
47
+ private:
48
+ using RemovableShadowNodes = std::unordered_map<Tag, std::shared_ptr<const ShadowNode>>;
49
+
50
+ mutable std::mutex mutex_;
51
+ std::atomic<bool> isPaused_;
52
+ std::atomic<bool> shouldCommitAfterPause_;
53
+ RemovableShadowNodes removableShadowNodes_;
54
+ std::vector<std::shared_ptr<UpdatesRegistry>> registries_;
55
+ const std::shared_ptr<StaticPropsRegistry> staticPropsRegistry_;
56
+
57
+ #ifdef ANDROID
58
+ PropsToRevertMap propsToRevertMap_;
59
+
60
+ static void
61
+ addToPropsMap(PropsMap &propsMap, const std::shared_ptr<const ShadowNode> &shadowNode, const folly::dynamic &props);
62
+ #endif
63
+ };
64
+
65
+ } // namespace reanimated
@@ -1,9 +1,11 @@
1
1
  #pragma once
2
2
 
3
- typedef enum LayoutAnimationType {
3
+ #include <cstdint>
4
+
5
+ typedef enum class LayoutAnimationType : std::uint8_t {
4
6
  ENTERING = 1,
5
7
  EXITING = 2,
6
8
  LAYOUT = 3,
7
9
  SHARED_ELEMENT_TRANSITION = 4,
8
- SHARED_ELEMENT_TRANSITION_PROGRESS = 5,
10
+ SHARED_ELEMENT_TRANSITION_NATIVE_ID = 5,
9
11
  } LayoutAnimationType;
@@ -1,102 +1,59 @@
1
1
  #include <reanimated/LayoutAnimations/LayoutAnimationsManager.h>
2
- #include <reanimated/Tools/CollectionUtils.h>
3
2
 
4
- #ifndef NDEBUG
3
+ #include <memory>
4
+ #include <unordered_map>
5
5
  #include <utility>
6
- #endif
6
+ #include <vector>
7
7
 
8
8
  namespace reanimated {
9
9
 
10
- void LayoutAnimationsManager::configureAnimationBatch(
11
- const std::vector<LayoutAnimationConfig> &layoutAnimationsBatch) {
10
+ void LayoutAnimationsManager::configureAnimationBatch(const std::vector<LayoutAnimationConfig> &layoutAnimationsBatch) {
12
11
  auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
13
- std::vector<LayoutAnimationConfig> sharedTransitionConfigs;
14
- for (auto layoutAnimationConfig : layoutAnimationsBatch) {
15
- const auto &[tag, type, config, sharedTransitionTag] =
16
- layoutAnimationConfig;
17
- if (type == SHARED_ELEMENT_TRANSITION ||
18
- type == SHARED_ELEMENT_TRANSITION_PROGRESS) {
19
- clearSharedTransitionConfig(tag);
20
- sharedTransitionConfigs.push_back(std::move(layoutAnimationConfig));
21
- } else {
22
- #ifdef RCT_NEW_ARCH_ENABLED
23
- if (type == ENTERING) {
24
- enteringAnimationsForNativeID_[tag] = config;
25
- continue;
26
- }
27
- #endif
12
+ for (const auto &layoutAnimationConfig : layoutAnimationsBatch) {
13
+ const auto &[tag, type, config, sharedTag] = layoutAnimationConfig;
14
+
15
+ if (type == LayoutAnimationType::ENTERING) {
16
+ enteringAnimationsForNativeID_[tag] = config;
17
+ continue;
18
+ }
19
+ if (type == LayoutAnimationType::SHARED_ELEMENT_TRANSITION_NATIVE_ID) {
20
+ sharedTransitionsForNativeID_[tag] = config;
21
+ sharedTransitionManager_->nativeIDToName_[tag] = sharedTag;
22
+ continue;
23
+ }
24
+ if (type == LayoutAnimationType::SHARED_ELEMENT_TRANSITION) {
28
25
  if (config == nullptr) {
29
- getConfigsForType(type).erase(tag);
26
+ // TODO (future): if the view was transitioned (e.g. so we are on the second screen)
27
+ // and we remove the config, we should also bring back the view (probably using tagsToRestore_)
28
+ sharedTransitions_.erase(tag);
29
+ sharedTransitionManager_->tagToName_.erase(tag);
30
30
  } else {
31
- getConfigsForType(type)[tag] = config;
31
+ sharedTransitions_[tag] = config;
32
+ sharedTransitionManager_->tagToName_[tag] = sharedTag;
32
33
  }
33
- }
34
- }
35
- for (const auto &[tag, type, config, sharedTransitionTag] :
36
- sharedTransitionConfigs) {
37
- if (config == nullptr) {
38
34
  continue;
39
35
  }
40
- sharedTransitionGroups_[sharedTransitionTag].push_back(tag);
41
- viewTagToSharedTag_[tag] = sharedTransitionTag;
42
- getConfigsForType(SHARED_ELEMENT_TRANSITION)[tag] = config;
43
- if (type == SHARED_ELEMENT_TRANSITION) {
44
- ignoreProgressAnimationForTag_.insert(tag);
36
+ if (config == nullptr) {
37
+ getConfigsForType(type).erase(tag);
38
+ } else {
39
+ getConfigsForType(type)[tag] = config;
45
40
  }
46
41
  }
47
42
  }
48
43
 
49
- void LayoutAnimationsManager::setShouldAnimateExiting(
50
- const int tag,
51
- const bool value) {
44
+ void LayoutAnimationsManager::setShouldAnimateExiting(const int tag, const bool value) {
52
45
  auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
53
46
  shouldAnimateExitingForTag_[tag] = value;
54
47
  }
55
48
 
56
- bool LayoutAnimationsManager::shouldAnimateExiting(
57
- const int tag,
58
- const bool shouldAnimate) {
59
- auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
60
- return collection::contains(shouldAnimateExitingForTag_, tag)
61
- ? shouldAnimateExitingForTag_[tag]
62
- : shouldAnimate;
63
- }
64
-
65
- bool LayoutAnimationsManager::hasLayoutAnimation(
66
- const int tag,
67
- const LayoutAnimationType type) {
49
+ bool LayoutAnimationsManager::shouldAnimateExiting(const int tag, const bool shouldAnimate) {
68
50
  auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
69
- if (type == SHARED_ELEMENT_TRANSITION_PROGRESS) {
70
- auto end = ignoreProgressAnimationForTag_.end();
71
- return ignoreProgressAnimationForTag_.find(tag) == end;
72
- }
73
- return collection::contains(getConfigsForType(type), tag);
51
+ return shouldAnimateExitingForTag_.contains(tag) ? shouldAnimateExitingForTag_[tag] : shouldAnimate;
74
52
  }
75
53
 
76
- void LayoutAnimationsManager::clearSharedTransitionConfig(const int tag) {
54
+ bool LayoutAnimationsManager::hasLayoutAnimation(const int tag, const LayoutAnimationType type) {
77
55
  auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
78
- #ifndef NDEBUG
79
- const auto &pair = viewsScreenSharedTagMap_[tag];
80
- screenSharedTagSet_.erase(pair);
81
- viewsScreenSharedTagMap_.erase(tag);
82
- #endif // NDEBUG
83
-
84
- sharedTransitionAnimations_.erase(tag);
85
- auto const &groupName = viewTagToSharedTag_[tag];
86
- if (groupName.empty()) {
87
- viewTagToSharedTag_.erase(tag);
88
- return;
89
- }
90
- auto &group = sharedTransitionGroups_[groupName];
91
- auto position = std::find(group.begin(), group.end(), tag);
92
- if (position != group.end()) {
93
- group.erase(position);
94
- }
95
- if (group.size() == 0) {
96
- sharedTransitionGroups_.erase(groupName);
97
- }
98
- viewTagToSharedTag_.erase(tag);
99
- ignoreProgressAnimationForTag_.erase(tag);
56
+ return getConfigsForType(type).contains(tag);
100
57
  }
101
58
 
102
59
  void LayoutAnimationsManager::clearLayoutAnimationConfig(const int tag) {
@@ -105,7 +62,6 @@ void LayoutAnimationsManager::clearLayoutAnimationConfig(const int tag) {
105
62
  exitingAnimations_.erase(tag);
106
63
  layoutAnimations_.erase(tag);
107
64
  shouldAnimateExitingForTag_.erase(tag);
108
- clearSharedTransitionConfig(tag);
109
65
  }
110
66
 
111
67
  void LayoutAnimationsManager::startLayoutAnimation(
@@ -113,119 +69,68 @@ void LayoutAnimationsManager::startLayoutAnimation(
113
69
  const int tag,
114
70
  const LayoutAnimationType type,
115
71
  const jsi::Object &values) {
116
- std::shared_ptr<Shareable> config, viewShareable;
72
+ std::shared_ptr<Serializable> config;
117
73
  {
118
74
  auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
119
- if (!collection::contains(getConfigsForType(type), tag)) {
75
+ if (!getConfigsForType(type).contains(tag)) {
120
76
  return;
121
77
  }
122
78
  config = getConfigsForType(type)[tag];
123
79
  }
124
80
  // TODO: cache the following!!
125
81
  jsi::Value layoutAnimationRepositoryAsValue =
126
- rt.global()
127
- .getPropertyAsObject(rt, "global")
128
- .getProperty(rt, "LayoutAnimationsManager");
82
+ rt.global().getPropertyAsObject(rt, "global").getProperty(rt, "LayoutAnimationsManager");
129
83
  jsi::Function startAnimationForTag =
130
- layoutAnimationRepositoryAsValue.getObject(rt).getPropertyAsFunction(
131
- rt, "start");
132
- startAnimationForTag.call(
133
- rt,
134
- jsi::Value(tag),
135
- jsi::Value(static_cast<int>(type)),
136
- values,
137
- config->toJSValue(rt));
84
+ layoutAnimationRepositoryAsValue.getObject(rt).getPropertyAsFunction(rt, "start");
85
+ startAnimationForTag.call(rt, jsi::Value(tag), jsi::Value(static_cast<int>(type)), values, config->toJSValue(rt));
138
86
  }
139
87
 
140
- void LayoutAnimationsManager::cancelLayoutAnimation(
141
- jsi::Runtime &rt,
142
- const int tag) const {
88
+ void LayoutAnimationsManager::cancelLayoutAnimation(jsi::Runtime &rt, const int tag) const {
143
89
  jsi::Value layoutAnimationRepositoryAsValue =
144
- rt.global()
145
- .getPropertyAsObject(rt, "global")
146
- .getProperty(rt, "LayoutAnimationsManager");
90
+ rt.global().getPropertyAsObject(rt, "global").getProperty(rt, "LayoutAnimationsManager");
147
91
  jsi::Function cancelLayoutAnimation =
148
- layoutAnimationRepositoryAsValue.getObject(rt).getPropertyAsFunction(
149
- rt, "stop");
92
+ layoutAnimationRepositoryAsValue.getObject(rt).getPropertyAsFunction(rt, "stop");
150
93
  cancelLayoutAnimation.call(rt, jsi::Value(tag));
151
94
  }
152
95
 
153
- /*
154
- The top screen on the stack triggers the animation, so we need to find
155
- the sibling view registered in the past. This method finds view
156
- registered in the same transition group (with the same transition tag)
157
- which has been added to that group directly before the one that we
158
- provide as an argument.
159
- */
160
- int LayoutAnimationsManager::findPrecedingViewTagForTransition(const int tag) {
161
- auto const &groupName = viewTagToSharedTag_[tag];
162
- auto const &group = sharedTransitionGroups_[groupName];
163
- auto position = std::find(group.begin(), group.end(), tag);
164
- if (position != group.end() && position != group.begin()) {
165
- return *std::prev(position);
166
- }
167
- return -1;
168
- }
169
-
170
- const std::vector<int> &LayoutAnimationsManager::getSharedGroup(
171
- const int viewTag) {
172
- const auto &groupSharedTag = viewTagToSharedTag_[viewTag];
173
- return sharedTransitionGroups_[groupSharedTag];
174
- }
175
-
176
- #ifdef RCT_NEW_ARCH_ENABLED
177
- void LayoutAnimationsManager::transferConfigFromNativeID(
178
- const int nativeId,
179
- const int tag) {
96
+ void LayoutAnimationsManager::transferConfigFromNativeID(const int nativeId, const int tag) {
180
97
  auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
181
- auto config = enteringAnimationsForNativeID_[nativeId];
98
+ const auto config = enteringAnimationsForNativeID_[nativeId];
182
99
  if (config) {
183
100
  enteringAnimations_.insert_or_assign(tag, config);
184
101
  }
185
102
  enteringAnimationsForNativeID_.erase(nativeId);
103
+
104
+ const auto sharedTransitionConfig = sharedTransitionsForNativeID_[nativeId];
105
+ if (sharedTransitionConfig) {
106
+ sharedTransitions_.insert_or_assign(tag, sharedTransitionConfig);
107
+ sharedTransitionManager_->tagToName_[tag] = sharedTransitionManager_->nativeIDToName_[nativeId];
108
+ }
109
+ sharedTransitionsForNativeID_.erase(nativeId);
110
+ sharedTransitionManager_->nativeIDToName_.erase(nativeId);
186
111
  }
187
- #endif
188
112
 
189
- #ifndef NDEBUG
190
- std::string LayoutAnimationsManager::getScreenSharedTagPairString(
191
- const int screenTag,
192
- const std::string &sharedTag) const {
193
- return std::to_string(screenTag) + ":" + sharedTag;
113
+ void LayoutAnimationsManager::transferSharedConfig(const Tag from, const Tag to) {
114
+ sharedTransitions_[to] = sharedTransitions_[from];
194
115
  }
195
116
 
196
- void LayoutAnimationsManager::checkDuplicateSharedTag(
197
- const int viewTag,
198
- const int screenTag) {
199
- if (!viewTagToSharedTag_.count(viewTag)) {
200
- return;
201
- }
202
- const auto &sharedTag = viewTagToSharedTag_[viewTag];
203
- const auto &pair = getScreenSharedTagPairString(screenTag, sharedTag);
204
- bool hasDuplicate = screenSharedTagSet_.count(pair);
205
- if (hasDuplicate) {
206
- jsLogger_->warnOnJS(
207
- "[Reanimated] Duplicate shared tag \"" + sharedTag +
208
- "\" on the same screen");
209
- }
210
- viewsScreenSharedTagMap_[viewTag] = pair;
211
- screenSharedTagSet_.insert(pair);
117
+ std::shared_ptr<SharedTransitionManager> LayoutAnimationsManager::getSharedTransitionManager() {
118
+ return sharedTransitionManager_;
212
119
  }
213
- #endif // NDEBUG
214
120
 
215
- std::unordered_map<int, std::shared_ptr<Shareable>> &
216
- LayoutAnimationsManager::getConfigsForType(const LayoutAnimationType type) {
121
+ std::unordered_map<int, std::shared_ptr<Serializable>> &LayoutAnimationsManager::getConfigsForType(
122
+ const LayoutAnimationType type) {
217
123
  switch (type) {
218
- case ENTERING:
124
+ case LayoutAnimationType::ENTERING:
219
125
  return enteringAnimations_;
220
- case EXITING:
126
+ case LayoutAnimationType::EXITING:
221
127
  return exitingAnimations_;
222
- case LAYOUT:
128
+ case LayoutAnimationType::LAYOUT:
223
129
  return layoutAnimations_;
224
- case SHARED_ELEMENT_TRANSITION:
225
- case SHARED_ELEMENT_TRANSITION_PROGRESS:
226
- return sharedTransitionAnimations_;
130
+ case LayoutAnimationType::SHARED_ELEMENT_TRANSITION:
131
+ return sharedTransitions_;
227
132
  default:
228
- assert(false);
133
+ throw std::invalid_argument("[Reanimated] Unknown layout animation type");
229
134
  }
230
135
  }
231
136