@react-native-ohos/react-native-reanimated 3.18.2-rc.2 → 4.0.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 +1 -1
  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 +94 -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 +45 -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 +111 -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 +1380 -971
  187. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +230 -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 +63 -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 +69 -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 +84 -0
  225. package/scripts/worklets-version.json +4 -0
  226. package/LICENSE +0 -21
  227. package/README.OpenSource +0 -11
  228. package/README.md +0 -10
  229. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
  230. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
  231. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
  232. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
  233. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
  234. package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
  235. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
  236. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
  237. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
  238. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
  239. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
  240. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
  241. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
  242. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
  243. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
  244. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
  245. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
  246. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
  247. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
  248. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
  249. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
  250. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
  251. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
  252. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
  253. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
  254. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
  255. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
  256. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
  257. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
  258. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
  259. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
  260. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
  261. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
  262. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
  263. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
  264. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
  265. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
  266. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
  267. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
  268. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
  269. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
  270. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
  271. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -173
  272. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
  273. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
  274. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -189
  275. package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
  276. package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
  277. package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
  278. package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
  279. package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
  280. package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
  281. package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
  282. package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
@@ -0,0 +1,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
- #pragma once
2
-
3
- typedef enum LayoutAnimationType {
4
- ENTERING = 1,
5
- EXITING = 2,
6
- LAYOUT = 3,
7
- SHARED_ELEMENT_TRANSITION = 4,
8
- SHARED_ELEMENT_TRANSITION_PROGRESS = 5,
9
- } LayoutAnimationType;
1
+ #pragma once
2
+
3
+ #include <cstdint>
4
+
5
+ typedef enum class LayoutAnimationType : std::uint8_t {
6
+ ENTERING = 1,
7
+ EXITING = 2,
8
+ LAYOUT = 3,
9
+ SHARED_ELEMENT_TRANSITION = 4,
10
+ SHARED_ELEMENT_TRANSITION_NATIVE_ID = 5,
11
+ } LayoutAnimationType;
@@ -1,232 +1,137 @@
1
- #include <reanimated/LayoutAnimations/LayoutAnimationsManager.h>
2
- #include <reanimated/Tools/CollectionUtils.h>
3
-
4
- #ifndef NDEBUG
5
- #include <utility>
6
- #endif
7
-
8
- namespace reanimated {
9
-
10
- void LayoutAnimationsManager::configureAnimationBatch(
11
- const std::vector<LayoutAnimationConfig> &layoutAnimationsBatch) {
12
- 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
28
- if (config == nullptr) {
29
- getConfigsForType(type).erase(tag);
30
- } else {
31
- getConfigsForType(type)[tag] = config;
32
- }
33
- }
34
- }
35
- for (const auto &[tag, type, config, sharedTransitionTag] :
36
- sharedTransitionConfigs) {
37
- if (config == nullptr) {
38
- continue;
39
- }
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);
45
- }
46
- }
47
- }
48
-
49
- void LayoutAnimationsManager::setShouldAnimateExiting(
50
- const int tag,
51
- const bool value) {
52
- auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
53
- shouldAnimateExitingForTag_[tag] = value;
54
- }
55
-
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) {
68
- 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);
74
- }
75
-
76
- void LayoutAnimationsManager::clearSharedTransitionConfig(const int tag) {
77
- 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);
100
- }
101
-
102
- void LayoutAnimationsManager::clearLayoutAnimationConfig(const int tag) {
103
- auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
104
- enteringAnimations_.erase(tag);
105
- exitingAnimations_.erase(tag);
106
- layoutAnimations_.erase(tag);
107
- shouldAnimateExitingForTag_.erase(tag);
108
- clearSharedTransitionConfig(tag);
109
- }
110
-
111
- void LayoutAnimationsManager::startLayoutAnimation(
112
- jsi::Runtime &rt,
113
- const int tag,
114
- const LayoutAnimationType type,
115
- const jsi::Object &values) {
116
- std::shared_ptr<Shareable> config, viewShareable;
117
- {
118
- auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
119
- if (!collection::contains(getConfigsForType(type), tag)) {
120
- return;
121
- }
122
- config = getConfigsForType(type)[tag];
123
- }
124
- // TODO: cache the following!!
125
- jsi::Value layoutAnimationRepositoryAsValue =
126
- rt.global()
127
- .getPropertyAsObject(rt, "global")
128
- .getProperty(rt, "LayoutAnimationsManager");
129
- 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));
138
- }
139
-
140
- void LayoutAnimationsManager::cancelLayoutAnimation(
141
- jsi::Runtime &rt,
142
- const int tag) const {
143
- jsi::Value layoutAnimationRepositoryAsValue =
144
- rt.global()
145
- .getPropertyAsObject(rt, "global")
146
- .getProperty(rt, "LayoutAnimationsManager");
147
- jsi::Function cancelLayoutAnimation =
148
- layoutAnimationRepositoryAsValue.getObject(rt).getPropertyAsFunction(
149
- rt, "stop");
150
- cancelLayoutAnimation.call(rt, jsi::Value(tag));
151
- }
152
-
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) {
180
- auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
181
- auto config = enteringAnimationsForNativeID_[nativeId];
182
- if (config) {
183
- enteringAnimations_.insert_or_assign(tag, config);
184
- }
185
- enteringAnimationsForNativeID_.erase(nativeId);
186
- }
187
- #endif
188
-
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;
194
- }
195
-
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);
212
- }
213
- #endif // NDEBUG
214
-
215
- std::unordered_map<int, std::shared_ptr<Shareable>> &
216
- LayoutAnimationsManager::getConfigsForType(const LayoutAnimationType type) {
217
- switch (type) {
218
- case ENTERING:
219
- return enteringAnimations_;
220
- case EXITING:
221
- return exitingAnimations_;
222
- case LAYOUT:
223
- return layoutAnimations_;
224
- case SHARED_ELEMENT_TRANSITION:
225
- case SHARED_ELEMENT_TRANSITION_PROGRESS:
226
- return sharedTransitionAnimations_;
227
- default:
228
- assert(false);
229
- }
230
- }
231
-
232
- } // namespace reanimated
1
+ #include <reanimated/LayoutAnimations/LayoutAnimationsManager.h>
2
+
3
+ #include <memory>
4
+ #include <unordered_map>
5
+ #include <utility>
6
+ #include <vector>
7
+
8
+ namespace reanimated {
9
+
10
+ void LayoutAnimationsManager::configureAnimationBatch(const std::vector<LayoutAnimationConfig> &layoutAnimationsBatch) {
11
+ auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
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) {
25
+ if (config == nullptr) {
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
+ } else {
31
+ sharedTransitions_[tag] = config;
32
+ sharedTransitionManager_->tagToName_[tag] = sharedTag;
33
+ }
34
+ continue;
35
+ }
36
+ if (config == nullptr) {
37
+ getConfigsForType(type).erase(tag);
38
+ } else {
39
+ getConfigsForType(type)[tag] = config;
40
+ }
41
+ }
42
+ }
43
+
44
+ void LayoutAnimationsManager::setShouldAnimateExiting(const int tag, const bool value) {
45
+ auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
46
+ shouldAnimateExitingForTag_[tag] = value;
47
+ }
48
+
49
+ bool LayoutAnimationsManager::shouldAnimateExiting(const int tag, const bool shouldAnimate) {
50
+ auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
51
+ return shouldAnimateExitingForTag_.contains(tag) ? shouldAnimateExitingForTag_[tag] : shouldAnimate;
52
+ }
53
+
54
+ bool LayoutAnimationsManager::hasLayoutAnimation(const int tag, const LayoutAnimationType type) {
55
+ auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
56
+ return getConfigsForType(type).contains(tag);
57
+ }
58
+
59
+ void LayoutAnimationsManager::clearLayoutAnimationConfig(const int tag) {
60
+ auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
61
+ enteringAnimations_.erase(tag);
62
+ exitingAnimations_.erase(tag);
63
+ layoutAnimations_.erase(tag);
64
+ shouldAnimateExitingForTag_.erase(tag);
65
+ }
66
+
67
+ void LayoutAnimationsManager::startLayoutAnimation(
68
+ jsi::Runtime &rt,
69
+ const int tag,
70
+ const LayoutAnimationType type,
71
+ const jsi::Object &values) {
72
+ std::shared_ptr<Serializable> config;
73
+ {
74
+ auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
75
+ if (!getConfigsForType(type).contains(tag)) {
76
+ return;
77
+ }
78
+ config = getConfigsForType(type)[tag];
79
+ }
80
+ // TODO: cache the following!!
81
+ jsi::Value layoutAnimationRepositoryAsValue =
82
+ rt.global().getPropertyAsObject(rt, "global").getProperty(rt, "LayoutAnimationsManager");
83
+ jsi::Function startAnimationForTag =
84
+ layoutAnimationRepositoryAsValue.getObject(rt).getPropertyAsFunction(rt, "start");
85
+ startAnimationForTag.call(rt, jsi::Value(tag), jsi::Value(static_cast<int>(type)), values, config->toJSValue(rt));
86
+ }
87
+
88
+ void LayoutAnimationsManager::cancelLayoutAnimation(jsi::Runtime &rt, const int tag) const {
89
+ jsi::Value layoutAnimationRepositoryAsValue =
90
+ rt.global().getPropertyAsObject(rt, "global").getProperty(rt, "LayoutAnimationsManager");
91
+ jsi::Function cancelLayoutAnimation =
92
+ layoutAnimationRepositoryAsValue.getObject(rt).getPropertyAsFunction(rt, "stop");
93
+ cancelLayoutAnimation.call(rt, jsi::Value(tag));
94
+ }
95
+
96
+ void LayoutAnimationsManager::transferConfigFromNativeID(const int nativeId, const int tag) {
97
+ auto lock = std::unique_lock<std::recursive_mutex>(animationsMutex_);
98
+ const auto config = enteringAnimationsForNativeID_[nativeId];
99
+ if (config) {
100
+ enteringAnimations_.insert_or_assign(tag, config);
101
+ }
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);
111
+ }
112
+
113
+ void LayoutAnimationsManager::transferSharedConfig(const Tag from, const Tag to) {
114
+ sharedTransitions_[to] = sharedTransitions_[from];
115
+ }
116
+
117
+ std::shared_ptr<SharedTransitionManager> LayoutAnimationsManager::getSharedTransitionManager() {
118
+ return sharedTransitionManager_;
119
+ }
120
+
121
+ std::unordered_map<int, std::shared_ptr<Serializable>> &LayoutAnimationsManager::getConfigsForType(
122
+ const LayoutAnimationType type) {
123
+ switch (type) {
124
+ case LayoutAnimationType::ENTERING:
125
+ return enteringAnimations_;
126
+ case LayoutAnimationType::EXITING:
127
+ return exitingAnimations_;
128
+ case LayoutAnimationType::LAYOUT:
129
+ return layoutAnimations_;
130
+ case LayoutAnimationType::SHARED_ELEMENT_TRANSITION:
131
+ return sharedTransitions_;
132
+ default:
133
+ throw std::invalid_argument("[Reanimated] Unknown layout animation type");
134
+ }
135
+ }
136
+
137
+ } // namespace reanimated