react-native-reanimated 3.8.0 → 3.9.0-layout-animation-experimental

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 (423) hide show
  1. package/Common/cpp/Fabric/ShadowTreeCloner.cpp +5 -2
  2. package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.cpp +42 -32
  3. package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.h +5 -7
  4. package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.cpp +565 -0
  5. package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.h +74 -0
  6. package/Common/cpp/LayoutAnimations/LayoutAnimationsUtils.h +140 -0
  7. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +216 -58
  8. package/Common/cpp/NativeModules/NativeReanimatedModule.h +32 -11
  9. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +2 -17
  10. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +6 -8
  11. package/Common/cpp/ReanimatedRuntime/RNRuntimeDecorator.cpp +3 -0
  12. package/Common/cpp/ReanimatedRuntime/WorkletRuntime.cpp +3 -4
  13. package/Common/cpp/ReanimatedRuntime/WorkletRuntimeDecorator.cpp +8 -3
  14. package/Common/cpp/SharedItems/Shareables.cpp +31 -5
  15. package/Common/cpp/SharedItems/Shareables.h +18 -2
  16. package/Common/cpp/Tools/JSScheduler.cpp +29 -5
  17. package/Common/cpp/Tools/JSScheduler.h +21 -4
  18. package/Common/cpp/Tools/PlatformDepMethodsHolder.h +6 -2
  19. package/Common/cpp/Tools/UIRuntimeDecorator.cpp +6 -0
  20. package/Common/cpp/Tools/UIRuntimeDecorator.h +1 -0
  21. package/android/CMakeLists.txt +3 -0
  22. package/android/build.gradle +17 -5
  23. package/android/src/main/cpp/NativeProxy.cpp +77 -12
  24. package/android/src/main/cpp/NativeProxy.h +35 -1
  25. package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +58 -19
  26. package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +7 -2
  27. package/android/src/{reactNativeVersionPatch/ReanimatedUIManager/latest → main/java}/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +5 -5
  28. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +10 -6
  29. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +18 -1
  30. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedTransitionManager.java +105 -17
  31. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +2 -1
  32. package/android/src/paper/java/com/swmansion/reanimated/NativeReanimatedModuleSpec.java +37 -0
  33. package/android/src/{main/java/com/swmansion/reanimated → reactNativeVersionPatch/ReanimatedUIManager/73/com/swmansion}/ReanimatedModule.java +4 -3
  34. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/{70 → 73}/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +1 -22
  35. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/ReanimatedModule.java +176 -0
  36. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +0 -26
  37. package/android/src/{fabric/java → reactNativeVersionPatch/RuntimeExecutor/73}/com/swmansion/reanimated/NativeProxy.java +16 -4
  38. package/android/src/reactNativeVersionPatch/RuntimeExecutor/latest/com/swmansion/reanimated/NativeProxy.java +143 -0
  39. package/apple/LayoutReanimation/REAAnimationsManager.h +3 -0
  40. package/apple/LayoutReanimation/REAAnimationsManager.m +11 -0
  41. package/apple/LayoutReanimation/REASharedTransitionManager.m +99 -23
  42. package/apple/LayoutReanimation/REASnapshot.h +1 -0
  43. package/apple/LayoutReanimation/REASnapshot.m +78 -37
  44. package/apple/REAModule.h +22 -2
  45. package/apple/REAModule.mm +97 -46
  46. package/apple/REANodesManager.h +3 -3
  47. package/apple/REANodesManager.mm +46 -22
  48. package/apple/native/NativeProxy.h +28 -2
  49. package/apple/native/NativeProxy.mm +65 -195
  50. package/apple/native/PlatformDepMethodsHolderImpl.h +59 -0
  51. package/apple/native/PlatformDepMethodsHolderImpl.mm +429 -0
  52. package/apple/sensor/ReanimatedSensor.m +5 -5
  53. package/lib/module/Animated.js.map +1 -1
  54. package/lib/module/ConfigHelper.js +1 -1
  55. package/lib/module/ConfigHelper.js.map +1 -1
  56. package/lib/module/animationBuilder.js +1 -0
  57. package/lib/module/animationBuilder.js.map +1 -1
  58. package/lib/module/createAnimatedComponent/InlinePropManager.js +4 -4
  59. package/lib/module/createAnimatedComponent/InlinePropManager.js.map +1 -1
  60. package/lib/module/createAnimatedComponent/JSPropsUpdater.js +9 -6
  61. package/lib/module/createAnimatedComponent/JSPropsUpdater.js.map +1 -1
  62. package/lib/module/createAnimatedComponent/JSPropsUpdater.web.js +11 -0
  63. package/lib/module/createAnimatedComponent/JSPropsUpdater.web.js.map +1 -0
  64. package/lib/module/createAnimatedComponent/PropsFilter.js +25 -9
  65. package/lib/module/createAnimatedComponent/PropsFilter.js.map +1 -1
  66. package/lib/module/createAnimatedComponent/commonTypes.js.map +1 -1
  67. package/lib/module/createAnimatedComponent/createAnimatedComponent.js +83 -52
  68. package/lib/module/createAnimatedComponent/createAnimatedComponent.js.map +1 -1
  69. package/lib/module/createAnimatedComponent/getViewInfo.js +37 -0
  70. package/lib/module/createAnimatedComponent/getViewInfo.js.map +1 -0
  71. package/lib/module/createAnimatedComponent/index.js.map +1 -1
  72. package/lib/module/createAnimatedComponent/setAndForwardRef.js +4 -5
  73. package/lib/module/createAnimatedComponent/setAndForwardRef.js.map +1 -1
  74. package/lib/module/createAnimatedComponent/utils.js.map +1 -1
  75. package/lib/module/index.js.map +1 -1
  76. package/lib/module/index.web.js +1 -2
  77. package/lib/module/index.web.js.map +1 -1
  78. package/lib/module/mock.js +12 -12
  79. package/lib/module/mock.js.map +1 -1
  80. package/lib/module/propsAllowlists.js.map +1 -1
  81. package/lib/module/reanimated2/Bezier.js.map +1 -1
  82. package/lib/module/reanimated2/Colors.js +4 -11
  83. package/lib/module/reanimated2/Colors.js.map +1 -1
  84. package/lib/module/reanimated2/Easing.js +3 -7
  85. package/lib/module/reanimated2/Easing.js.map +1 -1
  86. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +16 -13
  87. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  88. package/lib/module/reanimated2/NativeReanimated/index.js.map +1 -1
  89. package/lib/module/reanimated2/NativeReanimated/index.web.js.map +1 -1
  90. package/lib/module/reanimated2/PlatformChecker.js +2 -1
  91. package/lib/module/reanimated2/PlatformChecker.js.map +1 -1
  92. package/lib/module/reanimated2/PropAdapters.js +1 -1
  93. package/lib/module/reanimated2/PropAdapters.js.map +1 -1
  94. package/lib/module/reanimated2/PropsRegistry.js +1 -2
  95. package/lib/module/reanimated2/PropsRegistry.js.map +1 -1
  96. package/lib/module/reanimated2/Sensor.js +2 -2
  97. package/lib/module/reanimated2/Sensor.js.map +1 -1
  98. package/lib/module/reanimated2/SensorContainer.js +2 -2
  99. package/lib/module/reanimated2/SensorContainer.js.map +1 -1
  100. package/lib/module/reanimated2/UpdateLayoutAnimations.js +30 -8
  101. package/lib/module/reanimated2/UpdateLayoutAnimations.js.map +1 -1
  102. package/lib/module/reanimated2/UpdateProps.js.map +1 -1
  103. package/lib/module/reanimated2/ViewDescriptorsSet.js.map +1 -1
  104. package/lib/module/reanimated2/WorkletEventHandler.js +74 -31
  105. package/lib/module/reanimated2/WorkletEventHandler.js.map +1 -1
  106. package/lib/module/reanimated2/animation/clamp.js.map +1 -1
  107. package/lib/module/reanimated2/animation/commonTypes.js.map +1 -1
  108. package/lib/module/reanimated2/animation/decay/decay.js.map +1 -1
  109. package/lib/module/reanimated2/animation/decay/index.js.map +1 -1
  110. package/lib/module/reanimated2/animation/decay/rigidDecay.js.map +1 -1
  111. package/lib/module/reanimated2/animation/decay/rubberBandDecay.js.map +1 -1
  112. package/lib/module/reanimated2/animation/decay/utils.js.map +1 -1
  113. package/lib/module/reanimated2/animation/delay.js.map +1 -1
  114. package/lib/module/reanimated2/animation/index.js.map +1 -1
  115. package/lib/module/reanimated2/animation/repeat.js +1 -6
  116. package/lib/module/reanimated2/animation/repeat.js.map +1 -1
  117. package/lib/module/reanimated2/animation/sequence.js +1 -5
  118. package/lib/module/reanimated2/animation/sequence.js.map +1 -1
  119. package/lib/module/reanimated2/animation/spring.js.map +1 -1
  120. package/lib/module/reanimated2/animation/springUtils.js +8 -10
  121. package/lib/module/reanimated2/animation/springUtils.js.map +1 -1
  122. package/lib/module/reanimated2/animation/styleAnimation.js +5 -4
  123. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  124. package/lib/module/reanimated2/animation/timing.js +4 -1
  125. package/lib/module/reanimated2/animation/timing.js.map +1 -1
  126. package/lib/module/reanimated2/animation/transformationMatrix/matrixUtils.js +1 -2
  127. package/lib/module/reanimated2/animation/transformationMatrix/matrixUtils.js.map +1 -1
  128. package/lib/module/reanimated2/animation/util.js +22 -2
  129. package/lib/module/reanimated2/animation/util.js.map +1 -1
  130. package/lib/module/reanimated2/commonTypes.js +3 -1
  131. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  132. package/lib/module/reanimated2/component/FlatList.js +1 -0
  133. package/lib/module/reanimated2/component/FlatList.js.map +1 -1
  134. package/lib/module/reanimated2/component/Image.js +1 -0
  135. package/lib/module/reanimated2/component/Image.js.map +1 -1
  136. package/lib/module/reanimated2/component/LayoutAnimationConfig.js +1 -0
  137. package/lib/module/reanimated2/component/LayoutAnimationConfig.js.map +1 -1
  138. package/lib/module/reanimated2/component/PerformanceMonitor.js +169 -0
  139. package/lib/module/reanimated2/component/PerformanceMonitor.js.map +1 -0
  140. package/lib/module/reanimated2/component/ScrollView.js +1 -0
  141. package/lib/module/reanimated2/component/ScrollView.js.map +1 -1
  142. package/lib/module/reanimated2/component/Text.js +1 -0
  143. package/lib/module/reanimated2/component/Text.js.map +1 -1
  144. package/lib/module/reanimated2/component/View.js +1 -0
  145. package/lib/module/reanimated2/component/View.js.map +1 -1
  146. package/lib/module/reanimated2/core.js +6 -15
  147. package/lib/module/reanimated2/core.js.map +1 -1
  148. package/lib/module/reanimated2/errors.js +8 -8
  149. package/lib/module/reanimated2/errors.js.map +1 -1
  150. package/lib/module/reanimated2/fabricUtils.js +33 -8
  151. package/lib/module/reanimated2/fabricUtils.js.map +1 -1
  152. package/lib/module/reanimated2/fabricUtils.web.js.map +1 -1
  153. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js +2 -2
  154. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  155. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  156. package/lib/module/reanimated2/frameCallback/index.js.map +1 -1
  157. package/lib/module/reanimated2/globals.d.js.map +1 -1
  158. package/lib/module/reanimated2/helperTypes.js.map +1 -1
  159. package/lib/module/reanimated2/hook/commonTypes.js.map +1 -1
  160. package/lib/module/reanimated2/hook/index.js.map +1 -1
  161. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js +1 -0
  162. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  163. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +3 -4
  164. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  165. package/lib/module/reanimated2/hook/useAnimatedProps.js.map +1 -1
  166. package/lib/module/reanimated2/hook/useAnimatedReaction.js +1 -0
  167. package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  168. package/lib/module/reanimated2/hook/useAnimatedRef.js +12 -7
  169. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  170. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js +3 -1
  171. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  172. package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  173. package/lib/module/reanimated2/hook/useAnimatedStyle.js +3 -6
  174. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  175. package/lib/module/reanimated2/hook/useDerivedValue.js +3 -1
  176. package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
  177. package/lib/module/reanimated2/hook/useEvent.js +4 -5
  178. package/lib/module/reanimated2/hook/useEvent.js.map +1 -1
  179. package/lib/module/reanimated2/hook/useFrameCallback.js +1 -2
  180. package/lib/module/reanimated2/hook/useFrameCallback.js.map +1 -1
  181. package/lib/module/reanimated2/hook/useHandler.js +3 -1
  182. package/lib/module/reanimated2/hook/useHandler.js.map +1 -1
  183. package/lib/module/reanimated2/hook/useReducedMotion.js.map +1 -1
  184. package/lib/module/reanimated2/hook/useScrollViewOffset.js +60 -16
  185. package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  186. package/lib/module/reanimated2/hook/useSharedValue.js.map +1 -1
  187. package/lib/module/reanimated2/hook/useWorkletCallback.js.map +1 -1
  188. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  189. package/lib/module/reanimated2/index.js +2 -0
  190. package/lib/module/reanimated2/index.js.map +1 -1
  191. package/lib/module/reanimated2/initializers.js +1 -5
  192. package/lib/module/reanimated2/initializers.js.map +1 -1
  193. package/lib/module/reanimated2/interpolateColor.js +2 -6
  194. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  195. package/lib/module/reanimated2/interpolation.js +1 -1
  196. package/lib/module/reanimated2/interpolation.js.map +1 -1
  197. package/lib/module/reanimated2/isSharedValue.js.map +1 -1
  198. package/lib/module/reanimated2/jestUtils.js +3 -6
  199. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  200. package/lib/module/reanimated2/jestUtils.web.js.map +1 -1
  201. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +5 -9
  202. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  203. package/lib/module/reanimated2/js-reanimated/WebSensor.js.map +1 -1
  204. package/lib/module/reanimated2/js-reanimated/index.js +2 -2
  205. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  206. package/lib/module/reanimated2/js-reanimated/react-native-web.d.js.map +1 -1
  207. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +4 -2
  208. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  209. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +12 -11
  210. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  211. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +12 -10
  212. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  213. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  214. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  215. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +11 -4
  216. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  217. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +22 -22
  218. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  219. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js +22 -22
  220. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  221. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js +26 -26
  222. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  223. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +10 -10
  224. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  225. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +6 -6
  226. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  227. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +10 -10
  228. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  229. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +18 -18
  230. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  231. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +18 -18
  232. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  233. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +10 -10
  234. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  235. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +34 -34
  236. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  237. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  238. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +17 -4
  239. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  240. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +4 -4
  241. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  242. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +4 -4
  243. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  244. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +4 -4
  245. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  246. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +4 -4
  247. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  248. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +4 -4
  249. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  250. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  251. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  252. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/ProgressTransitionManager.js +16 -12
  253. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/ProgressTransitionManager.js.map +1 -1
  254. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.js +13 -7
  255. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.js.map +1 -1
  256. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.web.js.map +1 -1
  257. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  258. package/lib/module/reanimated2/layoutReanimation/web/animation/Bounce.web.js.map +1 -1
  259. package/lib/module/reanimated2/layoutReanimation/web/animation/Fade.web.js.map +1 -1
  260. package/lib/module/reanimated2/layoutReanimation/web/animation/Flip.web.js.map +1 -1
  261. package/lib/module/reanimated2/layoutReanimation/web/animation/Lightspeed.web.js.map +1 -1
  262. package/lib/module/reanimated2/layoutReanimation/web/animation/Pinwheel.web.js.map +1 -1
  263. package/lib/module/reanimated2/layoutReanimation/web/animation/Roll.web.js.map +1 -1
  264. package/lib/module/reanimated2/layoutReanimation/web/animation/Rotate.web.js.map +1 -1
  265. package/lib/module/reanimated2/layoutReanimation/web/animation/Slide.web.js.map +1 -1
  266. package/lib/module/reanimated2/layoutReanimation/web/animation/Stretch.web.js.map +1 -1
  267. package/lib/module/reanimated2/layoutReanimation/web/animation/Zoom.web.js.map +1 -1
  268. package/lib/module/reanimated2/layoutReanimation/web/animationParser.js +0 -2
  269. package/lib/module/reanimated2/layoutReanimation/web/animationParser.js.map +1 -1
  270. package/lib/module/reanimated2/layoutReanimation/web/animationsManager.js +1 -2
  271. package/lib/module/reanimated2/layoutReanimation/web/animationsManager.js.map +1 -1
  272. package/lib/module/reanimated2/layoutReanimation/web/componentStyle.js +3 -1
  273. package/lib/module/reanimated2/layoutReanimation/web/componentStyle.js.map +1 -1
  274. package/lib/module/reanimated2/layoutReanimation/web/componentUtils.js +6 -7
  275. package/lib/module/reanimated2/layoutReanimation/web/componentUtils.js.map +1 -1
  276. package/lib/module/reanimated2/layoutReanimation/web/config.js.map +1 -1
  277. package/lib/module/reanimated2/layoutReanimation/web/createAnimation.js +2 -2
  278. package/lib/module/reanimated2/layoutReanimation/web/createAnimation.js.map +1 -1
  279. package/lib/module/reanimated2/layoutReanimation/web/domUtils.js +4 -4
  280. package/lib/module/reanimated2/layoutReanimation/web/domUtils.js.map +1 -1
  281. package/lib/module/reanimated2/layoutReanimation/web/index.js.map +1 -1
  282. package/lib/module/reanimated2/layoutReanimation/web/transition/Fading.web.js.map +1 -1
  283. package/lib/module/reanimated2/layoutReanimation/web/transition/Linear.web.js.map +1 -1
  284. package/lib/module/reanimated2/layoutReanimation/web/transition/Sequenced.web.js.map +1 -1
  285. package/lib/module/reanimated2/mappers.js +2 -4
  286. package/lib/module/reanimated2/mappers.js.map +1 -1
  287. package/lib/module/reanimated2/mockedRequestAnimationFrame.js.map +1 -1
  288. package/lib/module/reanimated2/mutables.js +2 -4
  289. package/lib/module/reanimated2/mutables.js.map +1 -1
  290. package/lib/module/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  291. package/lib/module/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  292. package/lib/module/reanimated2/platform-specific/checkCppVersion.js.map +1 -1
  293. package/lib/module/reanimated2/platform-specific/jsVersion.js +1 -1
  294. package/lib/module/reanimated2/platform-specific/jsVersion.js.map +1 -1
  295. package/lib/module/reanimated2/platformFunctions/dispatchCommand.js +2 -4
  296. package/lib/module/reanimated2/platformFunctions/dispatchCommand.js.map +1 -1
  297. package/lib/module/reanimated2/platformFunctions/dispatchCommand.web.js.map +1 -1
  298. package/lib/module/reanimated2/platformFunctions/getRelativeCoords.js +2 -2
  299. package/lib/module/reanimated2/platformFunctions/getRelativeCoords.js.map +1 -1
  300. package/lib/module/reanimated2/platformFunctions/index.js.map +1 -1
  301. package/lib/module/reanimated2/platformFunctions/measure.js.map +1 -1
  302. package/lib/module/reanimated2/platformFunctions/measure.web.js.map +1 -1
  303. package/lib/module/reanimated2/platformFunctions/scrollTo.js.map +1 -1
  304. package/lib/module/reanimated2/platformFunctions/scrollTo.web.js +1 -1
  305. package/lib/module/reanimated2/platformFunctions/scrollTo.web.js.map +1 -1
  306. package/lib/module/reanimated2/platformFunctions/setGestureState.js.map +1 -1
  307. package/lib/module/reanimated2/platformFunctions/setGestureState.web.js.map +1 -1
  308. package/lib/module/reanimated2/platformFunctions/setNativeProps.js.map +1 -1
  309. package/lib/module/reanimated2/platformFunctions/setNativeProps.web.js.map +1 -1
  310. package/lib/module/reanimated2/pluginUtils.js.map +1 -1
  311. package/lib/module/reanimated2/publicGlobals.js.map +1 -1
  312. package/lib/module/reanimated2/runtimes.js +11 -19
  313. package/lib/module/reanimated2/runtimes.js.map +1 -1
  314. package/lib/module/reanimated2/screenTransition/RNScreensTurboModule.js +20 -0
  315. package/lib/module/reanimated2/screenTransition/RNScreensTurboModule.js.map +1 -0
  316. package/lib/module/reanimated2/screenTransition/animationManager.js +41 -0
  317. package/lib/module/reanimated2/screenTransition/animationManager.js.map +1 -0
  318. package/lib/module/reanimated2/screenTransition/commonTypes.js +4 -0
  319. package/lib/module/reanimated2/screenTransition/commonTypes.js.map +1 -0
  320. package/lib/module/reanimated2/screenTransition/index.js +5 -0
  321. package/lib/module/reanimated2/screenTransition/index.js.map +1 -0
  322. package/lib/module/reanimated2/screenTransition/presets.js +157 -0
  323. package/lib/module/reanimated2/screenTransition/presets.js.map +1 -0
  324. package/lib/module/reanimated2/screenTransition/styleUpdater.js +62 -0
  325. package/lib/module/reanimated2/screenTransition/styleUpdater.js.map +1 -0
  326. package/lib/module/reanimated2/screenTransition/swipeSimulator.js +190 -0
  327. package/lib/module/reanimated2/screenTransition/swipeSimulator.js.map +1 -0
  328. package/lib/module/reanimated2/shareableMappingCache.js.map +1 -1
  329. package/lib/module/reanimated2/shareables.js +27 -10
  330. package/lib/module/reanimated2/shareables.js.map +1 -1
  331. package/lib/module/reanimated2/threads.js +9 -34
  332. package/lib/module/reanimated2/threads.js.map +1 -1
  333. package/lib/module/reanimated2/valueSetter.js +1 -2
  334. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  335. package/lib/module/reanimated2/valueUnpacker.js +4 -3
  336. package/lib/module/reanimated2/valueUnpacker.js.map +1 -1
  337. package/lib/module/specs/NativeReanimatedModule.js +5 -0
  338. package/lib/module/specs/NativeReanimatedModule.js.map +1 -0
  339. package/lib/typescript/ConfigHelper.d.ts +1 -0
  340. package/lib/typescript/createAnimatedComponent/InlinePropManager.d.ts +1 -1
  341. package/lib/typescript/createAnimatedComponent/JSPropsUpdater.web.d.ts +6 -0
  342. package/lib/typescript/createAnimatedComponent/PropsFilter.d.ts +3 -0
  343. package/lib/typescript/createAnimatedComponent/getViewInfo.d.ts +9 -0
  344. package/lib/typescript/reanimated2/NativeReanimated/NativeReanimated.d.ts +8 -13
  345. package/lib/typescript/reanimated2/UpdateLayoutAnimations.d.ts +12 -1
  346. package/lib/typescript/reanimated2/WorkletEventHandler.d.ts +16 -9
  347. package/lib/typescript/reanimated2/animation/util.d.ts +2 -0
  348. package/lib/typescript/reanimated2/component/LayoutAnimationConfig.d.ts +1 -1
  349. package/lib/typescript/reanimated2/component/PerformanceMonitor.d.ts +2 -0
  350. package/lib/typescript/reanimated2/core.d.ts +3 -4
  351. package/lib/typescript/reanimated2/hook/commonTypes.d.ts +6 -0
  352. package/lib/typescript/reanimated2/hook/useEvent.d.ts +2 -3
  353. package/lib/typescript/reanimated2/hook/useScrollViewOffset.d.ts +3 -1
  354. package/lib/typescript/reanimated2/index.d.ts +3 -0
  355. package/lib/typescript/reanimated2/js-reanimated/JSReanimated.d.ts +2 -2
  356. package/lib/typescript/reanimated2/layoutReanimation/animationBuilder/commonTypes.d.ts +2 -1
  357. package/lib/typescript/reanimated2/layoutReanimation/sharedTransitions/ProgressTransitionManager.d.ts +2 -2
  358. package/lib/typescript/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.d.ts +2 -2
  359. package/lib/typescript/reanimated2/platform-specific/jsVersion.d.ts +1 -1
  360. package/lib/typescript/reanimated2/screenTransition/RNScreensTurboModule.d.ts +2 -0
  361. package/lib/typescript/reanimated2/screenTransition/animationManager.d.ts +3 -0
  362. package/lib/typescript/reanimated2/screenTransition/commonTypes.d.ts +38 -0
  363. package/lib/typescript/reanimated2/screenTransition/index.d.ts +3 -0
  364. package/lib/typescript/reanimated2/screenTransition/presets.d.ts +11 -0
  365. package/lib/typescript/reanimated2/screenTransition/styleUpdater.d.ts +3 -0
  366. package/lib/typescript/reanimated2/screenTransition/swipeSimulator.d.ts +2 -0
  367. package/lib/typescript/specs/NativeReanimatedModule.d.ts +6 -0
  368. package/package.json +29 -17
  369. package/plugin/build/plugin.js +7 -2
  370. package/src/ConfigHelper.ts +1 -1
  371. package/src/animationBuilder.tsx +2 -0
  372. package/src/createAnimatedComponent/InlinePropManager.ts +2 -2
  373. package/src/createAnimatedComponent/JSPropsUpdater.ts +7 -6
  374. package/src/createAnimatedComponent/JSPropsUpdater.web.ts +26 -0
  375. package/src/createAnimatedComponent/PropsFilter.tsx +31 -6
  376. package/src/createAnimatedComponent/createAnimatedComponent.tsx +108 -60
  377. package/src/createAnimatedComponent/getViewInfo.ts +39 -0
  378. package/src/mock.ts +13 -1
  379. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +33 -35
  380. package/src/reanimated2/PlatformChecker.ts +3 -2
  381. package/src/reanimated2/PropsRegistry.ts +1 -3
  382. package/src/reanimated2/UpdateLayoutAnimations.ts +53 -13
  383. package/src/reanimated2/WorkletEventHandler.ts +98 -39
  384. package/src/reanimated2/animation/styleAnimation.ts +8 -6
  385. package/src/reanimated2/animation/timing.ts +9 -1
  386. package/src/reanimated2/animation/util.ts +28 -3
  387. package/src/reanimated2/commonTypes.ts +4 -1
  388. package/src/reanimated2/component/PerformanceMonitor.tsx +216 -0
  389. package/src/reanimated2/core.ts +9 -31
  390. package/src/reanimated2/errors.ts +1 -0
  391. package/src/reanimated2/fabricUtils.ts +43 -18
  392. package/src/reanimated2/globals.d.ts +11 -1
  393. package/src/reanimated2/hook/commonTypes.ts +10 -0
  394. package/src/reanimated2/hook/useAnimatedRef.ts +20 -11
  395. package/src/reanimated2/hook/useEvent.ts +4 -4
  396. package/src/reanimated2/hook/useScrollViewOffset.ts +94 -23
  397. package/src/reanimated2/index.ts +11 -0
  398. package/src/reanimated2/js-reanimated/JSReanimated.ts +7 -7
  399. package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +4 -0
  400. package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +9 -1
  401. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +9 -1
  402. package/src/reanimated2/layoutReanimation/animationsManager.ts +10 -2
  403. package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +13 -0
  404. package/src/reanimated2/layoutReanimation/sharedTransitions/ProgressTransitionManager.ts +17 -8
  405. package/src/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.ts +26 -7
  406. package/src/reanimated2/layoutReanimation/web/animationsManager.ts +1 -1
  407. package/src/reanimated2/layoutReanimation/web/componentStyle.ts +3 -1
  408. package/src/reanimated2/layoutReanimation/web/componentUtils.ts +1 -1
  409. package/src/reanimated2/layoutReanimation/web/createAnimation.ts +2 -2
  410. package/src/reanimated2/platform-specific/jsVersion.ts +1 -1
  411. package/src/reanimated2/platformFunctions/getRelativeCoords.ts +2 -2
  412. package/src/reanimated2/screenTransition/RNScreensTurboModule.ts +29 -0
  413. package/src/reanimated2/screenTransition/animationManager.ts +45 -0
  414. package/src/reanimated2/screenTransition/commonTypes.ts +63 -0
  415. package/src/reanimated2/screenTransition/index.ts +12 -0
  416. package/src/reanimated2/screenTransition/presets.ts +137 -0
  417. package/src/reanimated2/screenTransition/styleUpdater.ts +73 -0
  418. package/src/reanimated2/screenTransition/swipeSimulator.ts +238 -0
  419. package/src/reanimated2/shareables.ts +29 -6
  420. package/src/reanimated2/valueUnpacker.ts +10 -3
  421. package/src/specs/NativeReanimatedModule.ts +9 -0
  422. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/70/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +0 -16
  423. package/android/src/reactNativeVersionPatch/messageQueueThread/67/com/swmansion/reanimated/ReanimatedMessageQueueThread.java +0 -12
@@ -8,8 +8,12 @@ import android.view.ViewParent;
8
8
  import com.facebook.react.bridge.ReactContext;
9
9
  import com.facebook.react.uimanager.IllegalViewOperationException;
10
10
  import com.facebook.react.uimanager.PixelUtil;
11
+ import com.facebook.react.uimanager.UIManagerHelper;
11
12
  import com.facebook.react.uimanager.ViewGroupManager;
12
13
  import com.facebook.react.uimanager.ViewManager;
14
+ import com.facebook.react.uimanager.events.Event;
15
+ import com.facebook.react.uimanager.events.EventDispatcher;
16
+ import com.facebook.react.uimanager.events.EventDispatcherListener;
13
17
  import com.facebook.react.views.view.ReactViewGroup;
14
18
  import com.swmansion.reanimated.Utils;
15
19
  import java.util.ArrayList;
@@ -19,6 +23,8 @@ import java.util.HashSet;
19
23
  import java.util.List;
20
24
  import java.util.Map;
21
25
  import java.util.Set;
26
+ import java.util.SortedSet;
27
+ import java.util.TreeSet;
22
28
  import javax.annotation.Nullable;
23
29
 
24
30
  public class SharedTransitionManager {
@@ -29,6 +35,7 @@ public class SharedTransitionManager {
29
35
  private final Map<Integer, Integer> mSharedTransitionInParentIndex = new HashMap<>();
30
36
  private final Map<Integer, Snapshot> mSnapshotRegistry = new HashMap<>();
31
37
  private final Map<Integer, View> mCurrentSharedTransitionViews = new HashMap<>();
38
+ private final Map<Integer, SortedSet<Integer>> mSharedViewChildrenIndices = new HashMap<>();
32
39
  private View mTransitionContainer;
33
40
  private final List<View> mRemovedSharedViews = new ArrayList<>();
34
41
  private final Set<Integer> mViewTagsToHide = new HashSet<>();
@@ -38,6 +45,25 @@ public class SharedTransitionManager {
38
45
  private final List<SharedElement> mSharedElementsWithProgress = new ArrayList<>();
39
46
  private final List<SharedElement> mSharedElementsWithAnimation = new ArrayList<>();
40
47
  private final Set<View> mReattachedViews = new HashSet<>();
48
+ private boolean mIsTransitionPrepared = false;
49
+ private final Set<Integer> mTagsToCleanup = new HashSet<>();
50
+
51
+ class TopWillAppearListener implements EventDispatcherListener {
52
+ private final EventDispatcher mEventDispatcher;
53
+
54
+ public TopWillAppearListener(EventDispatcher eventDispatcher) {
55
+ mEventDispatcher = eventDispatcher;
56
+ }
57
+
58
+ @Override
59
+ public void onEventDispatch(Event event) {
60
+ if (event.getEventName().equals("topWillAppear")) {
61
+ tryStartSharedTransitionForViews(mAddedSharedViews, true);
62
+ mAddedSharedViews.clear();
63
+ mEventDispatcher.removeListener(this);
64
+ }
65
+ }
66
+ }
41
67
 
42
68
  public SharedTransitionManager(AnimationsManager animationsManager) {
43
69
  mAnimationsManager = animationsManager;
@@ -56,13 +82,22 @@ public class SharedTransitionManager {
56
82
  return mCurrentSharedTransitionViews.get(tag);
57
83
  }
58
84
 
59
- protected void screenDidLayout() {
60
- tryStartSharedTransitionForViews(mAddedSharedViews, true);
61
- mAddedSharedViews.clear();
85
+ protected void screenDidLayout(View view) {
86
+ if (mAddedSharedViews.isEmpty()) {
87
+ return;
88
+ }
89
+ EventDispatcher eventDispatcher =
90
+ UIManagerHelper.getEventDispatcherForReactTag(
91
+ (ReactContext) view.getContext(), view.getId());
92
+ if (eventDispatcher != null) {
93
+ eventDispatcher.addListener(new TopWillAppearListener(eventDispatcher));
94
+ }
62
95
  }
63
96
 
64
97
  protected void viewDidLayout(View view) {
65
- maybeRestartAnimationWithNewLayout(view);
98
+ // this was causing problems when I moved the start of transition to the willAppear event
99
+ // handler
100
+ // maybeRestartAnimationWithNewLayout(view);
66
101
  }
67
102
 
68
103
  protected void onViewsRemoval(int[] tagsToDelete) {
@@ -72,11 +107,11 @@ public class SharedTransitionManager {
72
107
  visitTreeForTags(tagsToDelete, new SnapshotTreeVisitor());
73
108
  if (mRemovedSharedViews.size() > 0) {
74
109
  // this happens when navigation goes back
75
- boolean animationStarted = tryStartSharedTransitionForViews(mRemovedSharedViews, false);
76
- if (!animationStarted) {
110
+ mIsTransitionPrepared = prepareSharedTransition(mRemovedSharedViews, false);
111
+ if (!mIsTransitionPrepared) {
77
112
  mRemovedSharedViews.clear();
78
113
  }
79
- visitTreeForTags(tagsToDelete, new ConfigCleanerTreeVisitor());
114
+ visitTreeForTags(tagsToDelete, new PrepareConfigCleanupTreeVisitor());
80
115
  }
81
116
  }
82
117
 
@@ -141,8 +176,7 @@ public class SharedTransitionManager {
141
176
  sharedElementsToRestart, LayoutAnimations.Types.SHARED_ELEMENT_TRANSITION);
142
177
  }
143
178
 
144
- private boolean tryStartSharedTransitionForViews(
145
- List<View> sharedViews, boolean withNewElements) {
179
+ protected boolean prepareSharedTransition(List<View> sharedViews, boolean withNewElements) {
146
180
  if (sharedViews.isEmpty()) {
147
181
  return false;
148
182
  }
@@ -155,11 +189,43 @@ public class SharedTransitionManager {
155
189
  setupTransitionContainer();
156
190
  reparentSharedViewsForCurrentTransition(sharedElements);
157
191
  orderByAnimationTypes(sharedElements);
192
+ return true;
193
+ }
194
+
195
+ protected void onScreenWillDisappear() {
196
+ if (!mIsTransitionPrepared) {
197
+ return;
198
+ }
199
+ mIsTransitionPrepared = false;
200
+ for (SharedElement sharedElement : mSharedElementsWithAnimation) {
201
+ sharedElement.targetViewSnapshot = new Snapshot(sharedElement.targetView);
202
+ }
203
+ for (SharedElement sharedElement : mSharedElementsWithProgress) {
204
+ sharedElement.targetViewSnapshot = new Snapshot(sharedElement.targetView);
205
+ }
206
+
207
+ startPreparedTransitions();
208
+
209
+ for (Integer tag : mTagsToCleanup) {
210
+ mNativeMethodsHolder.clearAnimationConfig(tag);
211
+ }
212
+ mTagsToCleanup.clear();
213
+ }
214
+
215
+ private boolean tryStartSharedTransitionForViews(
216
+ List<View> sharedViews, boolean withNewElements) {
217
+ if (!prepareSharedTransition(sharedViews, withNewElements)) {
218
+ return false;
219
+ }
220
+ startPreparedTransitions();
221
+ return true;
222
+ }
223
+
224
+ private void startPreparedTransitions() {
158
225
  startSharedTransition(
159
226
  mSharedElementsWithAnimation, LayoutAnimations.Types.SHARED_ELEMENT_TRANSITION);
160
227
  startSharedTransition(
161
228
  mSharedElementsWithProgress, LayoutAnimations.Types.SHARED_ELEMENT_TRANSITION_PROGRESS);
162
- return true;
163
229
  }
164
230
 
165
231
  private void sortViewsByTags(List<View> views) {
@@ -334,14 +400,27 @@ public class SharedTransitionManager {
334
400
  for (SharedElement sharedElement : sharedElements) {
335
401
  View viewSource = sharedElement.sourceView;
336
402
  if (!mSharedTransitionParent.containsKey(viewSource.getId())) {
403
+ ViewGroup parent = (ViewGroup) viewSource.getParent();
404
+ int parentTag = parent.getId();
405
+ int childIndex = parent.indexOfChild(viewSource);
337
406
  mSharedTransitionParent.put(viewSource.getId(), (View) viewSource.getParent());
338
- mSharedTransitionInParentIndex.put(
339
- viewSource.getId(), ((ViewGroup) viewSource.getParent()).indexOfChild(viewSource));
340
- ((ViewGroup) viewSource.getParent()).removeView(viewSource);
341
- ((ViewGroup) mTransitionContainer).addView(viewSource);
342
- mReattachedViews.add(viewSource);
407
+ mSharedTransitionInParentIndex.put(viewSource.getId(), childIndex);
408
+ SortedSet<Integer> childrenIndicesSet = mSharedViewChildrenIndices.get(parentTag);
409
+ if (childrenIndicesSet == null) {
410
+ mSharedViewChildrenIndices.put(
411
+ parentTag, new TreeSet<>(Collections.singleton(childIndex)));
412
+ } else {
413
+ childrenIndicesSet.add(childIndex);
414
+ }
343
415
  }
344
416
  }
417
+
418
+ for (SharedElement sharedElement : sharedElements) {
419
+ View viewSource = sharedElement.sourceView;
420
+ ((ViewGroup) viewSource.getParent()).removeView(viewSource);
421
+ ((ViewGroup) mTransitionContainer).addView(viewSource);
422
+ mReattachedViews.add(viewSource);
423
+ }
345
424
  }
346
425
 
347
426
  private void startSharedTransition(List<SharedElement> sharedElements, int type) {
@@ -388,6 +467,15 @@ public class SharedTransitionManager {
388
467
  View parentView = mSharedTransitionParent.get(viewTag);
389
468
  int childIndex = mSharedTransitionInParentIndex.get(viewTag);
390
469
  ViewGroup parentViewGroup = ((ViewGroup) parentView);
470
+ int parentTag = parentViewGroup.getId();
471
+ SortedSet<Integer> childIndicesSet = mSharedViewChildrenIndices.get(parentTag);
472
+ // here we calculate how many children with smaller indices have not been reinserted yet
473
+ int childIndexOffset = childIndicesSet.headSet(childIndex).size();
474
+ childIndicesSet.remove(childIndex);
475
+ if (childIndicesSet.isEmpty()) {
476
+ mSharedViewChildrenIndices.remove(parentTag);
477
+ }
478
+ childIndex -= childIndexOffset;
391
479
  if (childIndex <= parentViewGroup.getChildCount()) {
392
480
  parentViewGroup.addView(view, childIndex);
393
481
  } else {
@@ -498,9 +586,9 @@ public class SharedTransitionManager {
498
586
  }
499
587
  }
500
588
 
501
- class ConfigCleanerTreeVisitor implements TreeVisitor {
589
+ class PrepareConfigCleanupTreeVisitor implements TreeVisitor {
502
590
  public void run(View view) {
503
- mNativeMethodsHolder.clearAnimationConfig(view.getId());
591
+ mTagsToCleanup.add(view.getId());
504
592
  }
505
593
  }
506
594
 
@@ -17,6 +17,7 @@ public class ReanimatedSensor {
17
17
  Sensor sensor;
18
18
  ReanimatedSensorType sensorType;
19
19
  int interval;
20
+ private static final int DEFAULT_INTERVAL = 8;
20
21
 
21
22
  ReanimatedSensor(
22
23
  WeakReference<ReactApplicationContext> reactContext,
@@ -30,7 +31,7 @@ public class ReanimatedSensor {
30
31
  (SensorManager) reactContext.get().getSystemService(reactContext.get().SENSOR_SERVICE);
31
32
  this.sensorType = sensorType;
32
33
  if (interval == -1) {
33
- this.interval = SensorManager.SENSOR_DELAY_UI;
34
+ this.interval = DEFAULT_INTERVAL;
34
35
  } else {
35
36
  this.interval = interval;
36
37
  }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * This code was copied from android/build/generated/source/codegen/java/com/swmansion/reanimated/NativeReanimatedModuleSpec.java
3
+ * which was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateModuleJavaSpec.js
9
+ *
10
+ * @nolint
11
+ */
12
+
13
+ package com.swmansion.reanimated;
14
+
15
+ import com.facebook.proguard.annotations.DoNotStrip;
16
+ import com.facebook.react.bridge.ReactApplicationContext;
17
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
18
+ import com.facebook.react.bridge.ReactMethod;
19
+ import com.facebook.react.turbomodule.core.interfaces.TurboModule;
20
+ import javax.annotation.Nonnull;
21
+
22
+ public abstract class NativeReanimatedModuleSpec extends ReactContextBaseJavaModule implements TurboModule {
23
+ public static final String NAME = "ReanimatedModule";
24
+
25
+ public NativeReanimatedModuleSpec(ReactApplicationContext reactContext) {
26
+ super(reactContext);
27
+ }
28
+
29
+ @Override
30
+ public @Nonnull String getName() {
31
+ return NAME;
32
+ }
33
+
34
+ @ReactMethod(isBlockingSynchronousMethod = true)
35
+ @DoNotStrip
36
+ public abstract boolean installTurboModule(String valueUnpackerCode);
37
+ }
@@ -3,7 +3,6 @@ package com.swmansion.reanimated;
3
3
  import android.util.Log;
4
4
  import com.facebook.react.bridge.LifecycleEventListener;
5
5
  import com.facebook.react.bridge.ReactApplicationContext;
6
- import com.facebook.react.bridge.ReactContextBaseJavaModule;
7
6
  import com.facebook.react.bridge.ReactMethod;
8
7
  import com.facebook.react.module.annotations.ReactModule;
9
8
  import com.facebook.react.uimanager.NativeViewHierarchyManager;
@@ -14,7 +13,7 @@ import java.util.ArrayList;
14
13
  import javax.annotation.Nullable;
15
14
 
16
15
  @ReactModule(name = ReanimatedModule.NAME)
17
- public class ReanimatedModule extends ReactContextBaseJavaModule
16
+ public class ReanimatedModule extends NativeReanimatedModuleSpec
18
17
  implements LifecycleEventListener, UIManagerModuleListener {
19
18
 
20
19
  public static final String NAME = "ReanimatedModule";
@@ -91,17 +90,19 @@ public class ReanimatedModule extends ReactContextBaseJavaModule
91
90
  }
92
91
 
93
92
  @ReactMethod(isBlockingSynchronousMethod = true)
94
- public void installTurboModule(String valueUnpackerCode) {
93
+ public boolean installTurboModule(String valueUnpackerCode) {
95
94
  // When debugging in chrome the JS context is not available.
96
95
  // https://github.com/facebook/react-native/blob/v0.67.0-rc.6/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.java#L25
97
96
  Utils.isChromeDebugger = getReactApplicationContext().getJavaScriptContextHolder().get() == 0;
98
97
 
99
98
  if (!Utils.isChromeDebugger) {
100
99
  this.getNodesManager().initWithContext(getReactApplicationContext(), valueUnpackerCode);
100
+ return true;
101
101
  } else {
102
102
  Log.w(
103
103
  "[REANIMATED]",
104
104
  "Unable to create Reanimated Native Module. You can ignore this message if you are using Chrome Debugger now.");
105
+ return false;
105
106
  }
106
107
  }
107
108
 
@@ -9,25 +9,8 @@ import com.facebook.react.bridge.ReadableArray;
9
9
  import com.facebook.react.bridge.ReadableMap;
10
10
  import com.facebook.react.bridge.WritableMap;
11
11
  import com.facebook.react.module.annotations.ReactModule;
12
- import com.facebook.react.uimanager.events.EventDispatcher;
13
12
  import java.util.List;
14
13
 
15
- class ReaUiImplementationProvider extends UIImplementationProvider {
16
-
17
- @Override
18
- UIImplementation createUIImplementation(
19
- ReactApplicationContext reactContext,
20
- ViewManagerRegistry viewManagerRegistry,
21
- EventDispatcher eventDispatcher,
22
- int minTimeLeftInFrameForNonBatchedOperationMs) {
23
- return new com.facebook.react.uimanager.ReanimatedUIImplementation(
24
- reactContext,
25
- viewManagerRegistry,
26
- eventDispatcher,
27
- minTimeLeftInFrameForNonBatchedOperationMs);
28
- }
29
- }
30
-
31
14
  @ReactModule(name = UIManagerModule.NAME)
32
15
  public class ReanimatedUIManager extends UIManagerModule {
33
16
 
@@ -35,11 +18,7 @@ public class ReanimatedUIManager extends UIManagerModule {
35
18
  ReactApplicationContext reactContext,
36
19
  List<ViewManager> viewManagersList,
37
20
  int minTimeLeftInFrameForNonBatchedOperationMs) {
38
- super(
39
- reactContext,
40
- viewManagersList,
41
- new ReaUiImplementationProvider(),
42
- minTimeLeftInFrameForNonBatchedOperationMs);
21
+ super(reactContext, viewManagersList, minTimeLeftInFrameForNonBatchedOperationMs);
43
22
  }
44
23
 
45
24
  public void onBatchComplete() {
@@ -0,0 +1,176 @@
1
+ package com.swmansion.reanimated;
2
+
3
+ import android.util.Log;
4
+ import androidx.annotation.NonNull;
5
+ import com.facebook.react.bridge.LifecycleEventListener;
6
+ import com.facebook.react.bridge.ReactApplicationContext;
7
+ import com.facebook.react.bridge.ReactMethod;
8
+ import com.facebook.react.bridge.UIManager;
9
+ import com.facebook.react.bridge.UIManagerListener;
10
+ import com.facebook.react.fabric.FabricUIManager;
11
+ import com.facebook.react.module.annotations.ReactModule;
12
+ import com.facebook.react.uimanager.UIManagerModule;
13
+ import com.facebook.react.uimanager.UIManagerModuleListener;
14
+ import java.util.ArrayList;
15
+ import javax.annotation.Nullable;
16
+
17
+ @ReactModule(name = ReanimatedModule.NAME)
18
+ public class ReanimatedModule extends NativeReanimatedModuleSpec
19
+ implements LifecycleEventListener, UIManagerModuleListener,
20
+ UIManagerListener {
21
+ public static final String NAME = "ReanimatedModule";
22
+
23
+ public void didDispatchMountItems(@NonNull UIManager uiManager) {
24
+ // Keep: Required for UIManagerListener
25
+ }
26
+
27
+ public void didMountItems(@NonNull UIManager uiManager) {
28
+ // Keep: Required for UIManagerListener
29
+ }
30
+
31
+ public void didScheduleMountItems(@NonNull UIManager uiManager) {
32
+ // Keep: Required for UIManagerListener
33
+ }
34
+
35
+ public void willDispatchViewUpdates(@NonNull UIManager uiManager) {
36
+ // This method is called for the interface of UIManagerListener on Fabric.
37
+ // The below function with the same name won't be called.
38
+ if (mOperations.isEmpty()) {
39
+ return;
40
+ }
41
+ final ArrayList<UIThreadOperation> operations = mOperations;
42
+ mOperations = new ArrayList<>();
43
+ if (uiManager instanceof FabricUIManager) {
44
+ ((FabricUIManager)uiManager).addUIBlock(uiBlockViewResolver -> {
45
+ NodesManager nodesManager = getNodesManager();
46
+ for (UIThreadOperation operation : operations) {
47
+ operation.execute(nodesManager);
48
+ }
49
+ });
50
+ } else {
51
+ throw new RuntimeException(
52
+ "[Reanimated] Failed to obtain instance of FabricUIManager.");
53
+ }
54
+ }
55
+
56
+ public void willMountItems(@NonNull UIManager uiManager) {}
57
+
58
+ private interface UIThreadOperation {
59
+ void execute(NodesManager nodesManager);
60
+ }
61
+
62
+ private ArrayList<UIThreadOperation> mOperations = new ArrayList<>();
63
+ private @Nullable NodesManager mNodesManager;
64
+
65
+ public ReanimatedModule(ReactApplicationContext reactContext) {
66
+ super(reactContext);
67
+ }
68
+
69
+ @Override
70
+ public void initialize() {
71
+ ReactApplicationContext reactCtx = getReactApplicationContext();
72
+
73
+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
74
+ UIManager uiManager = reactCtx.getFabricUIManager();
75
+ if (uiManager instanceof FabricUIManager) {
76
+ ((FabricUIManager)uiManager).addUIManagerEventListener(this);
77
+ } else {
78
+ throw new RuntimeException(
79
+ "[Reanimated] Failed to obtain instance of FabricUIManager.");
80
+ }
81
+ } else {
82
+ UIManagerModule uiManager =
83
+ reactCtx.getNativeModule(UIManagerModule.class);
84
+ uiManager.addUIManagerListener(this);
85
+ }
86
+ reactCtx.addLifecycleEventListener(this);
87
+ }
88
+
89
+ @Override
90
+ public void onHostPause() {
91
+ if (mNodesManager != null) {
92
+ mNodesManager.onHostPause();
93
+ }
94
+ }
95
+
96
+ @Override
97
+ public void onHostResume() {
98
+ if (mNodesManager != null) {
99
+ mNodesManager.onHostResume();
100
+ }
101
+ }
102
+
103
+ @Override
104
+ public void onHostDestroy() {
105
+ // do nothing
106
+ }
107
+
108
+ @Override
109
+ public void willDispatchViewUpdates(final UIManagerModule uiManager) {
110
+ // This method is called for the interface of UIManagerModuleListener on
111
+ // Paper. The below function with the same name won't be called.
112
+ if (mOperations.isEmpty()) {
113
+ return;
114
+ }
115
+ final ArrayList<UIThreadOperation> operations = mOperations;
116
+ mOperations = new ArrayList<>();
117
+ uiManager.addUIBlock(nativeViewHierarchyManager -> {
118
+ NodesManager nodesManager = getNodesManager();
119
+ for (UIThreadOperation operation : operations) {
120
+ operation.execute(nodesManager);
121
+ }
122
+ });
123
+ }
124
+
125
+ @Override
126
+ public String getName() {
127
+ return NAME;
128
+ }
129
+
130
+ /*package*/
131
+ public NodesManager getNodesManager() {
132
+ if (mNodesManager == null) {
133
+ mNodesManager = new NodesManager(getReactApplicationContext());
134
+ }
135
+
136
+ return mNodesManager;
137
+ }
138
+
139
+ @ReactMethod(isBlockingSynchronousMethod = true)
140
+ public boolean installTurboModule(String valueUnpackerCode) {
141
+ // When debugging in chrome the JS context is not available.
142
+ // https://github.com/facebook/react-native/blob/v0.67.0-rc.6/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.java#L25
143
+ Utils.isChromeDebugger =
144
+ getReactApplicationContext().getJavaScriptContextHolder().get() == 0;
145
+
146
+ if (!Utils.isChromeDebugger) {
147
+ this.getNodesManager().initWithContext(
148
+ getReactApplicationContext(), valueUnpackerCode);
149
+ return true;
150
+ } else {
151
+ Log.w(
152
+ "[REANIMATED]",
153
+ "Unable to create Reanimated Native Module. You can ignore this message if you are using Chrome Debugger now.");
154
+ return false;
155
+ }
156
+ }
157
+
158
+ @ReactMethod
159
+ public void addListener(String eventName) {
160
+ // Keep: Required for RN built in Event Emitter Calls.
161
+ }
162
+
163
+ @ReactMethod
164
+ public void removeListeners(Integer count) {
165
+ // Keep: Required for RN built in Event Emitter Calls.
166
+ }
167
+
168
+ @Override
169
+ public void invalidate() {
170
+ super.invalidate();
171
+
172
+ if (mNodesManager != null) {
173
+ mNodesManager.invalidate();
174
+ }
175
+ }
176
+ }
@@ -90,32 +90,6 @@ public class ReanimatedUIManager extends UIManagerModule {
90
90
  super.setChildren(viewTag, childrenTags);
91
91
  }
92
92
 
93
- /**
94
- * Replaces the View specified by oldTag with the View specified by newTag within oldTag's parent.
95
- * This resolves to a simple {@link #manageChildren} call, but React doesn't have enough info in
96
- * JS to formulate it itself.
97
- *
98
- * @deprecated This method will not be available in Fabric UIManager class.
99
- */
100
- @ReactMethod
101
- @Deprecated
102
- public void replaceExistingNonRootView(int oldTag, int newTag) {
103
- super.replaceExistingNonRootView(oldTag, newTag);
104
- }
105
-
106
- /**
107
- * Method which takes a container tag and then releases all subviews for that container upon
108
- * receipt.
109
- *
110
- * @param containerTag the tag of the container for which the subviews must be removed
111
- * @deprecated This method will not be available in Fabric UIManager class.
112
- */
113
- @ReactMethod
114
- @Deprecated
115
- public void removeSubviewsFromContainerWithID(int containerTag) {
116
- super.removeSubviewsFromContainerWithID(containerTag);
117
- }
118
-
119
93
  /**
120
94
  * Determines the location on screen, width, and height of the given view and returns the values
121
95
  * via an async callback.
@@ -69,36 +69,48 @@ public class NativeProxy extends NativeProxyCommon {
69
69
  public static NativeMethodsHolder createNativeMethodsHolder(LayoutAnimations layoutAnimations) {
70
70
  return new NativeMethodsHolder() {
71
71
  @Override
72
- public void startAnimation(int tag, int type, HashMap<String, Object> values) {}
72
+ public void startAnimation(int tag, int type, HashMap<String, Object> values) {
73
+ // NOT IMPLEMENTED
74
+ }
73
75
 
74
76
  @Override
75
77
  public boolean isLayoutAnimationEnabled() {
78
+ // NOT IMPLEMENTED
76
79
  return false;
77
80
  }
78
81
 
79
82
  @Override
80
83
  public int findPrecedingViewTagForTransition(int tag) {
84
+ // NOT IMPLEMENTED
81
85
  return -1;
82
86
  }
83
87
 
84
88
  @Override
85
89
  public boolean shouldAnimateExiting(int tag, boolean shouldAnimate) {
90
+ // NOT IMPLEMENTED
86
91
  return false;
87
92
  }
88
93
 
89
94
  @Override
90
95
  public boolean hasAnimation(int tag, int type) {
96
+ // NOT IMPLEMENTED
91
97
  return false;
92
98
  }
93
99
 
94
100
  @Override
95
- public void clearAnimationConfig(int tag) {}
101
+ public void clearAnimationConfig(int tag) {
102
+ // NOT IMPLEMENTED
103
+ }
96
104
 
97
105
  @Override
98
- public void cancelAnimation(int tag) {}
106
+ public void cancelAnimation(int tag) {
107
+ // NOT IMPLEMENTED
108
+ }
99
109
 
100
110
  @Override
101
- public void checkDuplicateSharedTag(int viewTag, int screenTag) {}
111
+ public void checkDuplicateSharedTag(int viewTag, int screenTag) {
112
+ // NOT IMPLEMENTED
113
+ }
102
114
  };
103
115
  }
104
116
  }