react-native-reanimated 2.6.0 → 3.0.0-rc.0

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 (405) hide show
  1. package/Common/cpp/Fabric/FabricUtils.cpp +128 -0
  2. package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +197 -0
  3. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +311 -6
  4. package/Common/cpp/Registries/EventHandlerRegistry.cpp +14 -1
  5. package/Common/cpp/Registries/NewestShadowNodesRegistry.cpp +68 -0
  6. package/Common/cpp/SharedItems/ShareableValue.cpp +20 -2
  7. package/Common/cpp/Tools/Mapper.cpp +23 -4
  8. package/Common/cpp/Tools/RuntimeDecorator.cpp +92 -46
  9. package/Common/cpp/Tools/Scheduler.cpp +4 -0
  10. package/Common/cpp/headers/Fabric/FabricUtils.h +78 -0
  11. package/Common/cpp/headers/Fabric/ReanimatedUIManagerBinding.h +46 -0
  12. package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +72 -2
  13. package/Common/cpp/headers/Registries/EventHandlerRegistry.h +8 -0
  14. package/Common/cpp/headers/Registries/NewestShadowNodesRegistry.h +41 -0
  15. package/Common/cpp/headers/SharedItems/SharedParent.h +3 -0
  16. package/Common/cpp/headers/SharedItems/ValueWrapper.h +25 -0
  17. package/Common/cpp/headers/SpecTools/ErrorHandler.h +5 -0
  18. package/Common/cpp/headers/Tools/Mapper.h +1 -1
  19. package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +43 -8
  20. package/Common/cpp/headers/Tools/RuntimeDecorator.h +8 -3
  21. package/README.md +4 -0
  22. package/RNReanimated.podspec +22 -11
  23. package/android/CMakeLists.txt +139 -27
  24. package/android/build.gradle +86 -209
  25. package/android/local.properties +1 -0
  26. package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +310 -0
  27. package/android/src/fabric/java/com/swmansion/reanimated/ReaCompatibility.java +25 -0
  28. package/android/src/main/cpp/NativeProxy.cpp +196 -41
  29. package/android/src/main/cpp/headers/NativeProxy.h +45 -7
  30. package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +13 -245
  31. package/android/src/main/java/com/swmansion/reanimated/ReanimatedModule.java +0 -125
  32. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +13 -6
  33. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +2 -1
  34. package/android/src/{main → paper}/java/com/swmansion/reanimated/NativeProxy.java +26 -10
  35. package/android/src/paper/java/com/swmansion/reanimated/ReaCompatibility.java +17 -0
  36. package/ios/Fabric/REAInitializerRCTFabricSurface.h +12 -0
  37. package/ios/Fabric/REAInitializerRCTFabricSurface.mm +73 -0
  38. package/ios/LayoutReanimation/REAAnimationsManager.h +1 -1
  39. package/ios/LayoutReanimation/REAAnimationsManager.m +2 -2
  40. package/ios/LayoutReanimation/REASnapshot.m +1 -1
  41. package/ios/LayoutReanimation/REAUIManager.h +1 -1
  42. package/ios/LayoutReanimation/REAUIManager.mm +4 -5
  43. package/ios/REAEventDispatcher.m +1 -2
  44. package/ios/REAModule.h +10 -1
  45. package/ios/REAModule.mm +284 -0
  46. package/ios/REANodesManager.h +27 -52
  47. package/ios/{REANodesManager.m → REANodesManager.mm} +92 -226
  48. package/ios/native/NativeMethods.h +1 -3
  49. package/ios/native/NativeMethods.mm +1 -1
  50. package/ios/native/NativeProxy.h +2 -2
  51. package/ios/native/NativeProxy.mm +162 -32
  52. package/ios/native/REAIOSErrorHandler.h +2 -4
  53. package/ios/native/REAIOSErrorHandler.mm +1 -1
  54. package/ios/native/REAIOSLogger.h +1 -3
  55. package/ios/native/REAIOSLogger.mm +1 -1
  56. package/ios/native/REAIOSScheduler.h +1 -3
  57. package/ios/native/REAIOSScheduler.mm +2 -2
  58. package/ios/native/REAInitializer.h +0 -7
  59. package/ios/native/REAInitializer.mm +14 -6
  60. package/ios/native/UIResponder+Reanimated.h +3 -1
  61. package/ios/native/UIResponder+Reanimated.mm +6 -4
  62. package/ios/sensor/ReanimatedSensor.h +1 -1
  63. package/ios/sensor/ReanimatedSensor.m +1 -1
  64. package/ios/sensor/ReanimatedSensorContainer.h +1 -1
  65. package/ios/sensor/ReanimatedSensorContainer.m +2 -2
  66. package/lib/Animated.js +0 -13
  67. package/lib/ConfigHelper.js +0 -1
  68. package/lib/createAnimatedComponent.js +30 -169
  69. package/lib/index.js +0 -13
  70. package/lib/reanimated2/Easing.js +8 -44
  71. package/lib/reanimated2/NativeMethods.js +20 -3
  72. package/lib/reanimated2/UpdateProps.js +25 -10
  73. package/lib/reanimated2/core.js +4 -37
  74. package/lib/reanimated2/fabricUtils.js +18 -0
  75. package/lib/reanimated2/globals.d.ts +18 -3
  76. package/lib/reanimated2/hook/useAnimatedRef.js +6 -2
  77. package/lib/reanimated2/hook/utils.js +0 -5
  78. package/lib/reanimated2/interpolateColor.js +5 -2
  79. package/lib/reanimated2/interpolation.js +0 -15
  80. package/lib/reanimated2/js-reanimated/index.js +3 -0
  81. package/lib/types/{lib/ConfigHelper.d.ts → ConfigHelper.d.ts} +0 -0
  82. package/lib/types/{lib/ReanimatedEventEmitter.d.ts → ReanimatedEventEmitter.d.ts} +0 -0
  83. package/lib/types/{lib/ReanimatedModule.d.ts → ReanimatedModule.d.ts} +0 -0
  84. package/lib/types/{lib/ReanimatedModule.macos.d.ts → ReanimatedModule.macos.d.ts} +0 -0
  85. package/lib/types/{lib/ReanimatedModule.native.d.ts → ReanimatedModule.native.d.ts} +0 -0
  86. package/lib/types/{lib/ReanimatedModule.windows.d.ts → ReanimatedModule.windows.d.ts} +0 -0
  87. package/lib/types/{lib/ReanimatedModuleCompat.d.ts → ReanimatedModuleCompat.d.ts} +0 -0
  88. package/lib/types/{lib/createAnimatedComponent.d.ts → createAnimatedComponent.d.ts} +0 -0
  89. package/lib/types/{lib/reanimated2 → reanimated2}/Bezier.d.ts +0 -0
  90. package/lib/types/{lib/reanimated2 → reanimated2}/Colors.d.ts +0 -0
  91. package/lib/types/{lib/reanimated2 → reanimated2}/Easing.d.ts +0 -0
  92. package/lib/types/{lib/reanimated2 → reanimated2}/NativeMethods.d.ts +2 -1
  93. package/lib/types/{lib/reanimated2 → reanimated2}/NativeReanimated/NativeReanimated.d.ts +0 -0
  94. package/lib/types/{lib/reanimated2 → reanimated2}/NativeReanimated/index.d.ts +0 -0
  95. package/lib/types/{lib/reanimated2 → reanimated2}/PlatformChecker.d.ts +0 -0
  96. package/lib/types/{lib/reanimated2 → reanimated2}/PropAdapters.d.ts +0 -0
  97. package/lib/types/{lib/reanimated2 → reanimated2}/UpdateProps.d.ts +0 -0
  98. package/lib/types/{lib/reanimated2 → reanimated2}/ViewDescriptorsSet.d.ts +0 -0
  99. package/lib/types/{lib/reanimated2 → reanimated2}/WorkletEventHandler.d.ts +0 -0
  100. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/MutableValue.d.ts +0 -0
  101. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/NativeReanimated.d.ts +0 -0
  102. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/NativeReanimated.native.d.ts +0 -0
  103. package/lib/types/{lib/reanimated2 → reanimated2}/animation/commonTypes.d.ts +0 -0
  104. package/lib/types/{lib/reanimated2 → reanimated2}/animation/decay.d.ts +0 -0
  105. package/lib/types/{lib/reanimated2 → reanimated2}/animation/delay.d.ts +0 -0
  106. package/lib/types/{lib/reanimated2 → reanimated2}/animation/index.d.ts +0 -0
  107. package/lib/types/{lib/reanimated2 → reanimated2}/animation/repeat.d.ts +0 -0
  108. package/lib/types/{lib/reanimated2 → reanimated2}/animation/sequence.d.ts +0 -0
  109. package/lib/types/{lib/reanimated2 → reanimated2}/animation/spring.d.ts +0 -0
  110. package/lib/types/{lib/reanimated2 → reanimated2}/animation/styleAnimation.d.ts +0 -0
  111. package/lib/types/{lib/reanimated2 → reanimated2}/animation/timing.d.ts +0 -0
  112. package/lib/types/{lib/reanimated2 → reanimated2}/animation/util.d.ts +0 -0
  113. package/lib/types/{lib/reanimated2 → reanimated2}/commonTypes.d.ts +2 -2
  114. package/lib/types/{lib/reanimated2 → reanimated2}/component/FlatList.d.ts +0 -0
  115. package/lib/types/{lib/reanimated2 → reanimated2}/component/WrappedComponents.d.ts +0 -0
  116. package/lib/types/{lib/reanimated2 → reanimated2}/component/index.d.ts +0 -0
  117. package/lib/types/{lib/reanimated2 → reanimated2}/core.d.ts +0 -0
  118. package/lib/types/reanimated2/fabricUtils.d.ts +4 -0
  119. package/lib/types/{lib/reanimated2 → reanimated2}/hook/Hooks.d.ts +0 -0
  120. package/lib/types/{lib/reanimated2 → reanimated2}/hook/commonTypes.d.ts +2 -1
  121. package/lib/types/{lib/reanimated2 → reanimated2}/hook/index.d.ts +1 -1
  122. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedGestureHandler.d.ts +2 -2
  123. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedReaction.d.ts +0 -0
  124. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedRef.d.ts +0 -0
  125. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedScrollHandler.d.ts +2 -2
  126. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedSensor.d.ts +1 -3
  127. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedStyle.d.ts +0 -0
  128. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useDerivedValue.d.ts +0 -0
  129. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useSharedValue.d.ts +0 -0
  130. package/lib/types/{lib/reanimated2 → reanimated2}/hook/utils.d.ts +2 -2
  131. package/lib/types/{lib/reanimated2 → reanimated2}/index.d.ts +0 -0
  132. package/lib/types/{lib/reanimated2 → reanimated2}/interpolateColor.d.ts +5 -0
  133. package/lib/types/{lib/reanimated2 → reanimated2}/interpolation.d.ts +1 -4
  134. package/lib/types/{lib/reanimated2 → reanimated2}/jestUtils.d.ts +0 -0
  135. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/JSReanimated.d.ts +0 -0
  136. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/Mapper.d.ts +0 -0
  137. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/MapperRegistry.d.ts +0 -0
  138. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/MutableValue.d.ts +0 -0
  139. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/commonTypes.d.ts +0 -0
  140. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/index.d.ts +0 -0
  141. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/LayoutAnimationRepository.d.ts +0 -0
  142. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/BaseAnimationBuilder.d.ts +0 -0
  143. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/ComplexAnimationBuilder.d.ts +0 -0
  144. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/Keyframe.d.ts +0 -0
  145. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/commonTypes.d.ts +0 -0
  146. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/index.d.ts +0 -0
  147. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Bounce.d.ts +0 -0
  148. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Default.d.ts +0 -0
  149. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Fade.d.ts +0 -0
  150. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Flip.d.ts +0 -0
  151. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Lightspeed.d.ts +0 -0
  152. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Pinwheel.d.ts +0 -0
  153. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Roll.d.ts +0 -0
  154. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Rotate.d.ts +0 -0
  155. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Slide.d.ts +0 -0
  156. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Stretch.d.ts +0 -0
  157. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Zoom.d.ts +0 -0
  158. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/index.d.ts +0 -0
  159. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/CurvedTransition.d.ts +0 -0
  160. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/EntryExitTransition.d.ts +0 -0
  161. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/FadingTransition.d.ts +0 -0
  162. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/JumpingTransition.d.ts +0 -0
  163. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/LinearTransition.d.ts +0 -0
  164. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/SequencedTransition.d.ts +0 -0
  165. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/index.d.ts +0 -0
  166. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/index.d.ts +0 -0
  167. package/lib/types/{lib/reanimated2 → reanimated2}/mock.d.ts +0 -0
  168. package/lib/types/{lib/reanimated2 → reanimated2}/platform-specific/RNRenderer.d.ts +0 -0
  169. package/lib/types/{lib/reanimated2 → reanimated2}/platform-specific/RNRenderer.web.d.ts +0 -0
  170. package/lib/types/{lib/reanimated2 → reanimated2}/utils.d.ts +0 -0
  171. package/lib/types/{lib/setAndForwardRef.d.ts → setAndForwardRef.d.ts} +0 -0
  172. package/package.json +10 -10
  173. package/plugin.js +29 -33
  174. package/react-native-reanimated.d.ts +15 -3
  175. package/src/Animated.js +0 -13
  176. package/src/ConfigHelper.ts +0 -1
  177. package/src/createAnimatedComponent.tsx +37 -197
  178. package/src/reanimated2/Easing.ts +8 -55
  179. package/src/reanimated2/NativeMethods.ts +39 -7
  180. package/src/reanimated2/UpdateProps.ts +38 -19
  181. package/src/reanimated2/commonTypes.ts +4 -2
  182. package/src/reanimated2/component/FlatList.tsx +8 -5
  183. package/src/reanimated2/core.ts +7 -48
  184. package/src/reanimated2/fabricUtils.ts +27 -0
  185. package/src/reanimated2/globals.d.ts +18 -3
  186. package/src/reanimated2/hook/commonTypes.ts +4 -2
  187. package/src/reanimated2/hook/index.ts +1 -1
  188. package/src/reanimated2/hook/useAnimatedGestureHandler.ts +2 -2
  189. package/src/reanimated2/hook/useAnimatedRef.ts +8 -3
  190. package/src/reanimated2/hook/useAnimatedScrollHandler.ts +2 -2
  191. package/src/reanimated2/hook/useAnimatedSensor.ts +1 -3
  192. package/src/reanimated2/hook/utils.ts +2 -11
  193. package/src/reanimated2/interpolateColor.ts +6 -2
  194. package/src/reanimated2/interpolation.ts +1 -26
  195. package/src/reanimated2/js-reanimated/index.ts +5 -0
  196. package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  197. package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
  198. package/android/.gradle/7.2/executionHistory/executionHistory.bin +0 -0
  199. package/android/.gradle/7.2/executionHistory/executionHistory.lock +0 -0
  200. package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
  201. package/android/.gradle/7.2/fileHashes/fileHashes.bin +0 -0
  202. package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
  203. package/android/.gradle/7.2/fileHashes/resourceHashesCache.bin +0 -0
  204. package/android/.gradle/7.2/gc.properties +0 -0
  205. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  206. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  207. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  208. package/android/.gradle/checksums/checksums.lock +0 -0
  209. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  210. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  211. package/android/.gradle/vcs-1/gc.properties +0 -0
  212. package/android/react-native-reanimated-64-hermes.aar +0 -0
  213. package/android/react-native-reanimated-64-jsc.aar +0 -0
  214. package/android/react-native-reanimated-65-hermes.aar +0 -0
  215. package/android/react-native-reanimated-65-jsc.aar +0 -0
  216. package/android/react-native-reanimated-66-hermes.aar +0 -0
  217. package/android/react-native-reanimated-66-jsc.aar +0 -0
  218. package/android/react-native-reanimated-67-hermes.aar +0 -0
  219. package/android/react-native-reanimated-67-jsc.aar +0 -0
  220. package/android/react-native-reanimated-68-hermes.aar +0 -0
  221. package/android/react-native-reanimated-68-jsc.aar +0 -0
  222. package/android/src/main/java/com/swmansion/reanimated/UpdateContext.java +0 -11
  223. package/android/src/main/java/com/swmansion/reanimated/nodes/AlwaysNode.java +0 -29
  224. package/android/src/main/java/com/swmansion/reanimated/nodes/BezierNode.java +0 -87
  225. package/android/src/main/java/com/swmansion/reanimated/nodes/BlockNode.java +0 -24
  226. package/android/src/main/java/com/swmansion/reanimated/nodes/CallFuncNode.java +0 -49
  227. package/android/src/main/java/com/swmansion/reanimated/nodes/ClockNode.java +0 -38
  228. package/android/src/main/java/com/swmansion/reanimated/nodes/ClockOpNode.java +0 -73
  229. package/android/src/main/java/com/swmansion/reanimated/nodes/ConcatNode.java +0 -36
  230. package/android/src/main/java/com/swmansion/reanimated/nodes/CondNode.java +0 -41
  231. package/android/src/main/java/com/swmansion/reanimated/nodes/DebugNode.java +0 -33
  232. package/android/src/main/java/com/swmansion/reanimated/nodes/EventNode.java +0 -83
  233. package/android/src/main/java/com/swmansion/reanimated/nodes/FinalNode.java +0 -5
  234. package/android/src/main/java/com/swmansion/reanimated/nodes/FunctionNode.java +0 -20
  235. package/android/src/main/java/com/swmansion/reanimated/nodes/JSCallNode.java +0 -41
  236. package/android/src/main/java/com/swmansion/reanimated/nodes/Node.java +0 -139
  237. package/android/src/main/java/com/swmansion/reanimated/nodes/NoopNode.java +0 -37
  238. package/android/src/main/java/com/swmansion/reanimated/nodes/OperatorNode.java +0 -377
  239. package/android/src/main/java/com/swmansion/reanimated/nodes/ParamNode.java +0 -71
  240. package/android/src/main/java/com/swmansion/reanimated/nodes/PropsNode.java +0 -153
  241. package/android/src/main/java/com/swmansion/reanimated/nodes/SetNode.java +0 -32
  242. package/android/src/main/java/com/swmansion/reanimated/nodes/StyleNode.java +0 -40
  243. package/android/src/main/java/com/swmansion/reanimated/nodes/TransformNode.java +0 -84
  244. package/android/src/main/java/com/swmansion/reanimated/nodes/ValueNode.java +0 -40
  245. package/android/src/main/java/com/swmansion/reanimated/transitions/ChangeTransition.java +0 -84
  246. package/android/src/main/java/com/swmansion/reanimated/transitions/SaneSidePropagation.java +0 -25
  247. package/android/src/main/java/com/swmansion/reanimated/transitions/Scale.java +0 -86
  248. package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionModule.java +0 -41
  249. package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionUtils.java +0 -161
  250. package/ios/Nodes/REAAlwaysNode.h +0 -4
  251. package/ios/Nodes/REAAlwaysNode.m +0 -35
  252. package/ios/Nodes/REABezierNode.h +0 -5
  253. package/ios/Nodes/REABezierNode.m +0 -104
  254. package/ios/Nodes/REABlockNode.h +0 -5
  255. package/ios/Nodes/REABlockNode.m +0 -25
  256. package/ios/Nodes/REACallFuncNode.h +0 -6
  257. package/ios/Nodes/REACallFuncNode.m +0 -69
  258. package/ios/Nodes/REAClockNodes.h +0 -19
  259. package/ios/Nodes/REAClockNodes.m +0 -118
  260. package/ios/Nodes/REAConcatNode.h +0 -5
  261. package/ios/Nodes/REAConcatNode.m +0 -32
  262. package/ios/Nodes/REACondNode.h +0 -5
  263. package/ios/Nodes/REACondNode.m +0 -36
  264. package/ios/Nodes/READebugNode.h +0 -5
  265. package/ios/Nodes/READebugNode.m +0 -30
  266. package/ios/Nodes/REAEventNode.h +0 -9
  267. package/ios/Nodes/REAEventNode.m +0 -35
  268. package/ios/Nodes/REAFunctionNode.h +0 -6
  269. package/ios/Nodes/REAFunctionNode.m +0 -24
  270. package/ios/Nodes/REAJSCallNode.h +0 -5
  271. package/ios/Nodes/REAJSCallNode.m +0 -30
  272. package/ios/Nodes/REANode.h +0 -40
  273. package/ios/Nodes/REANode.m +0 -155
  274. package/ios/Nodes/REAOperatorNode.h +0 -5
  275. package/ios/Nodes/REAOperatorNode.m +0 -115
  276. package/ios/Nodes/REAParamNode.h +0 -10
  277. package/ios/Nodes/REAParamNode.m +0 -79
  278. package/ios/Nodes/REAPropsNode.h +0 -9
  279. package/ios/Nodes/REAPropsNode.m +0 -98
  280. package/ios/Nodes/REASetNode.h +0 -5
  281. package/ios/Nodes/REASetNode.m +0 -34
  282. package/ios/Nodes/REAStyleNode.h +0 -5
  283. package/ios/Nodes/REAStyleNode.m +0 -28
  284. package/ios/Nodes/REATransformNode.h +0 -5
  285. package/ios/Nodes/REATransformNode.m +0 -36
  286. package/ios/Nodes/REAValueNode.h +0 -11
  287. package/ios/Nodes/REAValueNode.m +0 -26
  288. package/ios/REAModule.m +0 -185
  289. package/ios/Transitioning/RCTConvert+REATransition.h +0 -12
  290. package/ios/Transitioning/RCTConvert+REATransition.m +0 -53
  291. package/ios/Transitioning/REAAllTransitions.h +0 -26
  292. package/ios/Transitioning/REAAllTransitions.m +0 -297
  293. package/ios/Transitioning/REATransition.h +0 -65
  294. package/ios/Transitioning/REATransition.m +0 -211
  295. package/ios/Transitioning/REATransitionAnimation.h +0 -17
  296. package/ios/Transitioning/REATransitionAnimation.m +0 -80
  297. package/ios/Transitioning/REATransitionManager.h +0 -9
  298. package/ios/Transitioning/REATransitionManager.m +0 -62
  299. package/ios/Transitioning/REATransitionValues.h +0 -15
  300. package/ios/Transitioning/REATransitionValues.m +0 -26
  301. package/lib/reanimated1/Easing.js +0 -231
  302. package/lib/reanimated1/SpringConfig.js +0 -79
  303. package/lib/reanimated1/Transitioning.js +0 -158
  304. package/lib/reanimated1/animations/Animation.js +0 -32
  305. package/lib/reanimated1/animations/SpringUtils.js +0 -199
  306. package/lib/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
  307. package/lib/reanimated1/animations/decay.js +0 -54
  308. package/lib/reanimated1/animations/spring.js +0 -198
  309. package/lib/reanimated1/animations/timing.js +0 -74
  310. package/lib/reanimated1/base.js +0 -13
  311. package/lib/reanimated1/core/AnimatedAlways.js +0 -33
  312. package/lib/reanimated1/core/AnimatedBezier.js +0 -150
  313. package/lib/reanimated1/core/AnimatedBlock.js +0 -52
  314. package/lib/reanimated1/core/AnimatedCall.js +0 -55
  315. package/lib/reanimated1/core/AnimatedCallFunc.js +0 -72
  316. package/lib/reanimated1/core/AnimatedClock.js +0 -90
  317. package/lib/reanimated1/core/AnimatedClockTest.js +0 -22
  318. package/lib/reanimated1/core/AnimatedCode.js +0 -32
  319. package/lib/reanimated1/core/AnimatedConcat.js +0 -32
  320. package/lib/reanimated1/core/AnimatedCond.js +0 -57
  321. package/lib/reanimated1/core/AnimatedDebug.js +0 -62
  322. package/lib/reanimated1/core/AnimatedEvent.js +0 -126
  323. package/lib/reanimated1/core/AnimatedFunction.js +0 -55
  324. package/lib/reanimated1/core/AnimatedNode.js +0 -223
  325. package/lib/reanimated1/core/AnimatedOperator.js +0 -103
  326. package/lib/reanimated1/core/AnimatedParam.js +0 -88
  327. package/lib/reanimated1/core/AnimatedProps.js +0 -108
  328. package/lib/reanimated1/core/AnimatedSet.js +0 -38
  329. package/lib/reanimated1/core/AnimatedStartClock.js +0 -30
  330. package/lib/reanimated1/core/AnimatedStopClock.js +0 -30
  331. package/lib/reanimated1/core/AnimatedStyle.js +0 -78
  332. package/lib/reanimated1/core/AnimatedTransform.js +0 -78
  333. package/lib/reanimated1/core/AnimatedValue.js +0 -38
  334. package/lib/reanimated1/core/Core.test.js +0 -30
  335. package/lib/reanimated1/core/InternalAnimatedValue.js +0 -87
  336. package/lib/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
  337. package/lib/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
  338. package/lib/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
  339. package/lib/reanimated1/derived/acc.js +0 -11
  340. package/lib/reanimated1/derived/color.js +0 -47
  341. package/lib/reanimated1/derived/diff.js +0 -16
  342. package/lib/reanimated1/derived/diffClamp.js +0 -11
  343. package/lib/reanimated1/derived/evaluateOnce.js +0 -35
  344. package/lib/reanimated1/derived/index.js +0 -8
  345. package/lib/reanimated1/derived/interpolate.js +0 -152
  346. package/lib/reanimated1/derived/interpolateColors.js +0 -62
  347. package/lib/reanimated1/derived/onChange.js +0 -14
  348. package/lib/reanimated1/derived/useCode.js +0 -41
  349. package/lib/reanimated1/index.js +0 -53
  350. package/lib/reanimated1/operators.js +0 -35
  351. package/lib/reanimated1/useValue.js +0 -10
  352. package/lib/reanimated1/val.js +0 -3
  353. package/lib/types/react-native-reanimated-tests.d.ts +0 -1
  354. package/src/reanimated1/Easing.js +0 -231
  355. package/src/reanimated1/SpringConfig.js +0 -79
  356. package/src/reanimated1/Transitioning.js +0 -158
  357. package/src/reanimated1/animations/Animation.js +0 -32
  358. package/src/reanimated1/animations/SpringUtils.js +0 -199
  359. package/src/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
  360. package/src/reanimated1/animations/decay.js +0 -54
  361. package/src/reanimated1/animations/spring.js +0 -198
  362. package/src/reanimated1/animations/timing.js +0 -74
  363. package/src/reanimated1/base.js +0 -13
  364. package/src/reanimated1/core/AnimatedAlways.js +0 -33
  365. package/src/reanimated1/core/AnimatedBezier.js +0 -150
  366. package/src/reanimated1/core/AnimatedBlock.js +0 -52
  367. package/src/reanimated1/core/AnimatedCall.js +0 -55
  368. package/src/reanimated1/core/AnimatedCallFunc.js +0 -72
  369. package/src/reanimated1/core/AnimatedClock.js +0 -90
  370. package/src/reanimated1/core/AnimatedClockTest.js +0 -22
  371. package/src/reanimated1/core/AnimatedCode.js +0 -32
  372. package/src/reanimated1/core/AnimatedConcat.js +0 -32
  373. package/src/reanimated1/core/AnimatedCond.js +0 -57
  374. package/src/reanimated1/core/AnimatedDebug.js +0 -62
  375. package/src/reanimated1/core/AnimatedEvent.js +0 -126
  376. package/src/reanimated1/core/AnimatedFunction.js +0 -55
  377. package/src/reanimated1/core/AnimatedNode.js +0 -223
  378. package/src/reanimated1/core/AnimatedOperator.js +0 -103
  379. package/src/reanimated1/core/AnimatedParam.js +0 -88
  380. package/src/reanimated1/core/AnimatedProps.js +0 -108
  381. package/src/reanimated1/core/AnimatedSet.js +0 -38
  382. package/src/reanimated1/core/AnimatedStartClock.js +0 -30
  383. package/src/reanimated1/core/AnimatedStopClock.js +0 -30
  384. package/src/reanimated1/core/AnimatedStyle.js +0 -78
  385. package/src/reanimated1/core/AnimatedTransform.js +0 -78
  386. package/src/reanimated1/core/AnimatedValue.js +0 -38
  387. package/src/reanimated1/core/Core.test.js +0 -30
  388. package/src/reanimated1/core/InternalAnimatedValue.js +0 -87
  389. package/src/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
  390. package/src/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
  391. package/src/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
  392. package/src/reanimated1/derived/acc.js +0 -11
  393. package/src/reanimated1/derived/color.js +0 -47
  394. package/src/reanimated1/derived/diff.js +0 -16
  395. package/src/reanimated1/derived/diffClamp.js +0 -11
  396. package/src/reanimated1/derived/evaluateOnce.js +0 -35
  397. package/src/reanimated1/derived/index.js +0 -8
  398. package/src/reanimated1/derived/interpolate.js +0 -152
  399. package/src/reanimated1/derived/interpolateColors.js +0 -62
  400. package/src/reanimated1/derived/onChange.js +0 -14
  401. package/src/reanimated1/derived/useCode.js +0 -41
  402. package/src/reanimated1/index.js +0 -53
  403. package/src/reanimated1/operators.js +0 -35
  404. package/src/reanimated1/useValue.js +0 -10
  405. package/src/reanimated1/val.js +0 -3
@@ -8,6 +8,7 @@ import com.facebook.proguard.annotations.DoNotStrip;
8
8
  import com.facebook.react.ReactApplication;
9
9
  import com.facebook.react.bridge.NativeModule;
10
10
  import com.facebook.react.bridge.ReactApplicationContext;
11
+ import com.facebook.react.bridge.ReadableMap;
11
12
  import com.facebook.react.bridge.ReadableNativeArray;
12
13
  import com.facebook.react.bridge.WritableArray;
13
14
  import com.facebook.react.bridge.WritableMap;
@@ -15,6 +16,7 @@ import com.facebook.react.devsupport.interfaces.DevSupportManager;
15
16
  import com.facebook.react.turbomodule.core.CallInvokerHolderImpl;
16
17
  import com.facebook.react.uimanager.UIManagerModule;
17
18
  import com.facebook.react.uimanager.events.RCTEventEmitter;
19
+ import com.facebook.soloader.SoLoader;
18
20
  import com.swmansion.common.GestureHandlerStateManager;
19
21
  import com.swmansion.reanimated.layoutReanimation.AnimationsManager;
20
22
  import com.swmansion.reanimated.layoutReanimation.LayoutAnimations;
@@ -31,7 +33,7 @@ import java.util.Set;
31
33
  public class NativeProxy {
32
34
 
33
35
  static {
34
- System.loadLibrary("reanimated");
36
+ SoLoader.loadLibrary("reanimated");
35
37
  }
36
38
 
37
39
  @DoNotStrip
@@ -104,9 +106,13 @@ public class NativeProxy {
104
106
  (CallInvokerHolderImpl) context.getCatalystInstance().getJSCallInvokerHolder();
105
107
  LayoutAnimations LayoutAnimations = new LayoutAnimations(context);
106
108
  mScheduler = new Scheduler(context);
109
+
107
110
  mHybridData =
108
111
  initHybrid(
109
- context.getJavaScriptContextHolder().get(), holder, mScheduler, LayoutAnimations);
112
+ context.getJavaScriptContextHolder().get(),
113
+ holder,
114
+ mScheduler,
115
+ LayoutAnimations);
110
116
  mContext = new WeakReference<>(context);
111
117
  prepare(LayoutAnimations);
112
118
  reanimatedSensorContainer = new ReanimatedSensorContainer(mContext);
@@ -135,6 +141,8 @@ public class NativeProxy {
135
141
 
136
142
  public native boolean isAnyHandlerWaitingForEvent(String eventName);
137
143
 
144
+ public native void performOperations();
145
+
138
146
  public Scheduler getScheduler() {
139
147
  return mScheduler;
140
148
  }
@@ -147,14 +155,17 @@ public class NativeProxy {
147
155
  }
148
156
 
149
157
  private void addDevMenuOption() {
150
- final DevSupportManager devSupportManager =
151
- ((ReactApplication) mContext.get().getApplicationContext())
152
- .getReactNativeHost()
153
- .getReactInstanceManager()
154
- .getDevSupportManager();
155
-
156
- devSupportManager.addCustomDevOption(
157
- "Toggle slow animations (Reanimated)", this::toggleSlowAnimations);
158
+ // In Expo, `ApplicationContext` is not an instance of `ReactApplication`
159
+ if (mContext.get().getApplicationContext() instanceof ReactApplication) {
160
+ final DevSupportManager devSupportManager =
161
+ ((ReactApplication) mContext.get().getApplicationContext())
162
+ .getReactNativeHost()
163
+ .getReactInstanceManager()
164
+ .getDevSupportManager();
165
+
166
+ devSupportManager.addCustomDevOption(
167
+ "Toggle slow animations (Reanimated)", this::toggleSlowAnimations);
168
+ }
158
169
  }
159
170
 
160
171
  @DoNotStrip
@@ -167,6 +178,11 @@ public class NativeProxy {
167
178
  mNodesManager.updateProps(viewTag, props);
168
179
  }
169
180
 
181
+ @DoNotStrip
182
+ private void synchronouslyUpdateUIProps(int viewTag, ReadableMap uiProps) {
183
+ mNodesManager.synchronouslyUpdateUIProps(viewTag, uiProps);
184
+ }
185
+
170
186
  @DoNotStrip
171
187
  private String obtainProp(int viewTag, String propName) {
172
188
  return mNodesManager.obtainProp(viewTag, propName);
@@ -0,0 +1,17 @@
1
+ package com.swmansion.reanimated;
2
+
3
+ import com.facebook.react.bridge.ReactApplicationContext;
4
+ import com.facebook.react.bridge.ReadableMap;
5
+ import com.swmansion.reanimated.NodesManager;
6
+
7
+ class ReaCompatibility {
8
+ public ReaCompatibility(ReactApplicationContext reactApplicationContext) {
9
+
10
+ }
11
+ public void registerFabricEventListener(NodesManager nodeManager) {
12
+
13
+ }
14
+ public void synchronouslyUpdateUIProps(int viewTag, ReadableMap uiProps) {
15
+
16
+ }
17
+ }
@@ -0,0 +1,12 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
2
+
3
+ #import <RNReanimated/REAModule.h>
4
+ #import <React/RCTFabricSurface.h>
5
+
6
+ @interface REAInitializerRCTFabricSurface : RCTFabricSurface
7
+
8
+ @property REAModule *reaModule;
9
+
10
+ @end
11
+
12
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -0,0 +1,73 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
2
+
3
+ #import <React/RCTSurface.h>
4
+ #import <React/RCTSurfaceView.h>
5
+ #import <memory>
6
+
7
+ #import <RNReanimated/REAInitializerRCTFabricSurface.h>
8
+ #import <RNReanimated/REAModule.h>
9
+
10
+ @implementation REAInitializerRCTFabricSurface {
11
+ std::shared_ptr<facebook::react::SurfaceHandler> _surfaceHandler;
12
+ int _tag;
13
+ RCTSurface *_surface;
14
+ }
15
+
16
+ - (instancetype)init
17
+ {
18
+ if (self = [super init]) {
19
+ _tag = -1;
20
+ _surface = [[RCTSurface alloc] init];
21
+ _surfaceHandler = std::make_shared<facebook::react::SurfaceHandler>("REASurface", _tag);
22
+ }
23
+ return self;
24
+ }
25
+
26
+ - (NSNumber *)rootViewTag
27
+ {
28
+ return @(_tag);
29
+ }
30
+
31
+ - (NSInteger)rootTag
32
+ {
33
+ return (NSInteger)_tag;
34
+ }
35
+
36
+ - (void)start
37
+ {
38
+ // this is only needed method, the rest of them is just for prevent null pointer exceptions
39
+ [_reaModule installReanimatedUIManagerBindingAfterReload];
40
+ }
41
+
42
+ - (facebook::react::SurfaceHandler const &)surfaceHandler
43
+ {
44
+ return *_surfaceHandler.get();
45
+ }
46
+
47
+ - (void)setMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize
48
+ {
49
+ }
50
+
51
+ - (void)setMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize viewportOffset:(CGPoint)viewportOffset
52
+ {
53
+ }
54
+
55
+ - (void)stop
56
+ {
57
+ }
58
+
59
+ - (CGSize)sizeThatFitsMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize
60
+ {
61
+ CGSize size{0, 0};
62
+ return size;
63
+ }
64
+
65
+ - (nonnull RCTSurfaceView *)view
66
+ {
67
+ // This method should never be called.
68
+ react_native_assert(false);
69
+ }
70
+
71
+ @end
72
+
73
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -1,6 +1,6 @@
1
1
  #import <Foundation/Foundation.h>
2
+ #import <RNReanimated/REASnapshot.h>
2
3
  #import <React/RCTUIManager.h>
3
- #import "REASnapshot.h"
4
4
 
5
5
  NS_ASSUME_NONNULL_BEGIN
6
6
 
@@ -1,9 +1,9 @@
1
- #import "REAAnimationsManager.h"
1
+ #import <RNReanimated/REAAnimationsManager.h>
2
+ #import <RNReanimated/REAUIManager.h>
2
3
  #import <React/RCTComponentData.h>
3
4
  #import <React/RCTTextView.h>
4
5
  #import <React/UIView+Private.h>
5
6
  #import <React/UIView+React.h>
6
- #import "REAUIManager.h"
7
7
 
8
8
  @interface REAAnimationsManager ()
9
9
 
@@ -1,5 +1,5 @@
1
- #import "REASnapshot.h"
2
1
  #import <Foundation/Foundation.h>
2
+ #import <RNReanimated/REASnapshot.h>
3
3
 
4
4
  NS_ASSUME_NONNULL_BEGIN
5
5
 
@@ -1,7 +1,7 @@
1
+ #import <RNReanimated/REAAnimationsManager.h>
1
2
  #import <React/RCTBridge+Private.h>
2
3
  #import <React/RCTDefines.h>
3
4
  #import <React/RCTUIManager.h>
4
- #import "REAAnimationsManager.h"
5
5
 
6
6
  NS_ASSUME_NONNULL_BEGIN
7
7
 
@@ -1,9 +1,8 @@
1
- #import "REAUIManager.h"
2
1
  #import <Foundation/Foundation.h>
3
- #include "FeaturesConfig.h"
4
- #import "REAIOSScheduler.h"
5
- #include "Scheduler.h"
6
-
2
+ #import <RNReanimated/FeaturesConfig.h>
3
+ #import <RNReanimated/REAIOSScheduler.h>
4
+ #import <RNReanimated/REAUIManager.h>
5
+ #import <RNReanimated/Scheduler.h>
7
6
  #import <React/RCTComponentData.h>
8
7
  #import <React/RCTLayoutAnimation.h>
9
8
  #import <React/RCTLayoutAnimationGroup.h>
@@ -1,5 +1,4 @@
1
- #import "REAEventDispatcher.h"
2
- #import <RNReanimated/REAModule.h>
1
+ #import <RNReanimated/REAEventDispatcher.h>
3
2
  #import <React/RCTBridge+Private.h>
4
3
  #import <React/RCTDefines.h>
5
4
 
package/ios/REAModule.h CHANGED
@@ -1,3 +1,8 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
2
+ #import <RNReanimated/NewestShadowNodesRegistry.h>
3
+ #import <RNReanimated/ReanimatedUIManagerBinding.h>
4
+ #endif
5
+
1
6
  #import <React/RCTBridgeModule.h>
2
7
  #import <React/RCTEventDispatcher.h>
3
8
  #import <React/RCTEventEmitter.h>
@@ -5,10 +10,14 @@
5
10
  #import <React/RCTUIManagerObserverCoordinator.h>
6
11
  #import <React/RCTUIManagerUtils.h>
7
12
 
8
- #import "REAValueNode.h"
13
+ #import <RNReanimated/REANodesManager.h>
9
14
 
10
15
  @interface REAModule : RCTEventEmitter <RCTBridgeModule, RCTEventDispatcherObserver, RCTUIManagerObserver>
11
16
 
12
17
  @property (nonatomic, readonly) REANodesManager *nodesManager;
13
18
 
19
+ #ifdef RCT_NEW_ARCH_ENABLED
20
+ - (void)installReanimatedUIManagerBindingAfterReload;
21
+ #endif
22
+
14
23
  @end
@@ -0,0 +1,284 @@
1
+ #import <React/RCTBridge+Private.h>
2
+
3
+ #ifdef RCT_NEW_ARCH_ENABLED
4
+ #import <React/RCTFabricSurface.h>
5
+ #import <React/RCTScheduler.h>
6
+ #import <React/RCTSurface.h>
7
+ #import <React/RCTSurfacePresenter.h>
8
+ #import <React/RCTSurfacePresenterBridgeAdapter.h>
9
+ #import <React/RCTSurfaceView.h>
10
+ #endif
11
+
12
+ #import <RNReanimated/NativeProxy.h>
13
+
14
+ #ifdef RCT_NEW_ARCH_ENABLED
15
+ #import <RNReanimated/NewestShadowNodesRegistry.h>
16
+ #import <RNReanimated/REAInitializerRCTFabricSurface.h>
17
+ #import <RNReanimated/ReanimatedUIManagerBinding.h>
18
+ #endif
19
+
20
+ #import <RNReanimated/REAModule.h>
21
+ #import <RNReanimated/REANodesManager.h>
22
+
23
+ using namespace facebook::react;
24
+ using namespace reanimated;
25
+
26
+ @interface RCTBridge (JSIRuntime)
27
+ - (void *)runtime;
28
+ @end
29
+
30
+ @interface RCTBridge (RCTTurboModule)
31
+ - (std::shared_ptr<facebook::react::CallInvoker>)jsCallInvoker;
32
+ - (void)_tryAndHandleError:(dispatch_block_t)block;
33
+ @end
34
+
35
+ #ifdef RCT_NEW_ARCH_ENABLED
36
+ static __strong REAInitializerRCTFabricSurface *reaSurface;
37
+ #else
38
+ typedef void (^AnimatedOperation)(REANodesManager *nodesManager);
39
+ #endif
40
+
41
+ @implementation REAModule {
42
+ #ifdef RCT_NEW_ARCH_ENABLED
43
+ __weak RCTSurfacePresenter *_surfacePresenter;
44
+ std::shared_ptr<NewestShadowNodesRegistry> newestShadowNodesRegistry;
45
+ std::weak_ptr<NativeReanimatedModule> reanimatedModule_;
46
+ std::shared_ptr<EventListener> eventListener_;
47
+ #else
48
+ NSMutableArray<AnimatedOperation> *_operations;
49
+ #endif
50
+ }
51
+
52
+ RCT_EXPORT_MODULE(ReanimatedModule);
53
+
54
+ - (void)invalidate
55
+ {
56
+ #ifdef RCT_NEW_ARCH_ENABLED
57
+ RCTScheduler *scheduler = [_surfacePresenter scheduler];
58
+ [scheduler removeEventListener:eventListener_];
59
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
60
+ #endif
61
+ [_nodesManager invalidate];
62
+ [super invalidate];
63
+ }
64
+
65
+ - (dispatch_queue_t)methodQueue
66
+ {
67
+ // This module needs to be on the same queue as the UIManager to avoid
68
+ // having to lock `_operations` and `_preOperations` since `uiManagerWillPerformMounting`
69
+ // will be called from that queue.
70
+ return RCTGetUIManagerQueue();
71
+ }
72
+
73
+ #ifdef RCT_NEW_ARCH_ENABLED
74
+
75
+ - (std::shared_ptr<UIManager>)getUIManager
76
+ {
77
+ RCTScheduler *scheduler = [_surfacePresenter scheduler];
78
+ return scheduler.uiManager;
79
+ }
80
+
81
+ - (void)injectReanimatedUIManagerBinding:(jsi::Runtime &)runtime uiManager:(std::shared_ptr<UIManager>)uiManager
82
+ {
83
+ RuntimeExecutor syncRuntimeExecutor = [&](std::function<void(jsi::Runtime & runtime_)> &&callback) {
84
+ callback(runtime);
85
+ };
86
+ ReanimatedUIManagerBinding::createAndInstallIfNeeded(
87
+ runtime, syncRuntimeExecutor, uiManager, newestShadowNodesRegistry);
88
+ }
89
+
90
+ - (void)setUpNativeReanimatedModule:(std::shared_ptr<UIManager>)uiManager
91
+ {
92
+ if (auto reanimatedModule = reanimatedModule_.lock()) {
93
+ reanimatedModule->setUIManager(uiManager);
94
+ reanimatedModule->setNewestShadowNodesRegistry(newestShadowNodesRegistry);
95
+ }
96
+ }
97
+
98
+ - (void)injectDependencies:(jsi::Runtime &)runtime
99
+ {
100
+ auto uiManager = [self getUIManager];
101
+ react_native_assert(uiManager.get() != nil);
102
+ newestShadowNodesRegistry = std::make_shared<NewestShadowNodesRegistry>();
103
+ [self injectReanimatedUIManagerBinding:runtime uiManager:uiManager];
104
+ [self setUpNativeReanimatedModule:uiManager];
105
+ }
106
+
107
+ #pragma mark-- Initialize
108
+
109
+ - (void)installReanimatedUIManagerBindingAfterReload
110
+ {
111
+ // called from REAInitializerRCTFabricSurface::start
112
+ __weak __typeof__(self) weakSelf = self;
113
+ _surfacePresenter = self.bridge.surfacePresenter;
114
+ [_nodesManager setSurfacePresenter:_surfacePresenter];
115
+
116
+ // to avoid deadlock we can't use Executor from React Native
117
+ // but we can create own and use it because initialization is already synchronized
118
+ react_native_assert(self.bridge != nil);
119
+ RCTRuntimeExecutorFromBridge(self.bridge)(^(jsi::Runtime &runtime) {
120
+ if (__typeof__(self) strongSelf = weakSelf) {
121
+ [strongSelf injectDependencies:runtime];
122
+ }
123
+ });
124
+ }
125
+
126
+ - (void)handleJavaScriptDidLoadNotification:(NSNotification *)notification
127
+ {
128
+ _surfacePresenter = self.bridge.surfacePresenter;
129
+ RCTScheduler *scheduler = [_surfacePresenter scheduler];
130
+ __weak __typeof__(self) weakSelf = self;
131
+ _surfacePresenter.runtimeExecutor(^(jsi::Runtime &runtime) {
132
+ __typeof__(self) strongSelf = weakSelf;
133
+ if (strongSelf == nil) {
134
+ return;
135
+ }
136
+ if (auto reanimatedModule = strongSelf->reanimatedModule_.lock()) {
137
+ self->eventListener_ =
138
+ std::make_shared<facebook::react::EventListener>([reanimatedModule](const RawEvent &rawEvent) {
139
+ if (!RCTIsMainQueue()) {
140
+ // event listener called on the JS thread, let's ignore this event
141
+ // as we cannot safely access worklet runtime here
142
+ // and also we don't care about topLayout events
143
+ return false;
144
+ }
145
+ return reanimatedModule->handleRawEvent(rawEvent, CACurrentMediaTime() * 1000);
146
+ });
147
+ [scheduler addEventListener:self->eventListener_];
148
+ }
149
+ });
150
+ }
151
+
152
+ - (void)setBridge:(RCTBridge *)bridge
153
+ {
154
+ [super setBridge:bridge];
155
+
156
+ [[NSNotificationCenter defaultCenter] addObserver:self
157
+ selector:@selector(handleJavaScriptDidLoadNotification:)
158
+ name:RCTJavaScriptDidLoadNotification
159
+ object:nil];
160
+
161
+ [[self.moduleRegistry moduleForName:"EventDispatcher"] addDispatchObserver:self];
162
+ [bridge.uiManager.observerCoordinator addObserver:self];
163
+
164
+ // only within the first loading `self.bridge.surfacePresenter` exists
165
+ // during the reload `self.bridge.surfacePresenter` is null
166
+ _surfacePresenter = self.bridge.surfacePresenter;
167
+ #ifdef DEBUG
168
+ if (reaSurface == nil) {
169
+ // we need only one instance because SurfacePresenter is the same during the application lifetime
170
+ reaSurface = [[REAInitializerRCTFabricSurface alloc] init];
171
+ [_surfacePresenter registerSurface:reaSurface];
172
+ }
173
+ reaSurface.reaModule = self;
174
+ #endif
175
+
176
+ if (_surfacePresenter == nil) {
177
+ // _surfacePresenter will be set in installReanimatedUIManagerBindingAfterReload
178
+ _nodesManager = [[REANodesManager alloc] initWithModule:self bridge:self.bridge surfacePresenter:nil];
179
+ return;
180
+ }
181
+
182
+ _nodesManager = [[REANodesManager alloc] initWithModule:self bridge:self.bridge surfacePresenter:_surfacePresenter];
183
+ }
184
+
185
+ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(installTurboModule)
186
+ {
187
+ facebook::jsi::Runtime *jsiRuntime = [self.bridge respondsToSelector:@selector(runtime)]
188
+ ? reinterpret_cast<facebook::jsi::Runtime *>(self.bridge.runtime)
189
+ : nullptr;
190
+
191
+ if (jsiRuntime) {
192
+ // Reanimated
193
+ jsi::Runtime &runtime = *jsiRuntime;
194
+
195
+ auto reanimatedModule = reanimated::createReanimatedModule(self.bridge, self.bridge.jsCallInvoker);
196
+
197
+ auto workletRuntimeValue = runtime.global()
198
+ .getProperty(runtime, "ArrayBuffer")
199
+ .asObject(runtime)
200
+ .asFunction(runtime)
201
+ .callAsConstructor(runtime, {static_cast<double>(sizeof(void *))});
202
+ uintptr_t *workletRuntimeData =
203
+ reinterpret_cast<uintptr_t *>(workletRuntimeValue.getObject(runtime).getArrayBuffer(runtime).data(runtime));
204
+ workletRuntimeData[0] = reinterpret_cast<uintptr_t>(reanimatedModule->runtime.get());
205
+
206
+ runtime.global().setProperty(runtime, "_WORKLET_RUNTIME", workletRuntimeValue);
207
+
208
+ runtime.global().setProperty(runtime, "_IS_FABRIC", true);
209
+
210
+ runtime.global().setProperty(
211
+ runtime,
212
+ jsi::PropNameID::forAscii(runtime, "__reanimatedModuleProxy"),
213
+ jsi::Object::createFromHostObject(runtime, reanimatedModule));
214
+ reanimatedModule_ = reanimatedModule;
215
+ if (_surfacePresenter != nil) {
216
+ // reload, uiManager is null right now, we need to wait for `installReanimatedUIManagerBindingAfterReload`
217
+ [self injectDependencies:runtime];
218
+ }
219
+ }
220
+ return nil;
221
+ }
222
+
223
+ #else
224
+
225
+ RCT_EXPORT_METHOD(installTurboModule)
226
+ {
227
+ // TODO: Move initialization from UIResponder+Reanimated to here
228
+ }
229
+
230
+ - (void)setBridge:(RCTBridge *)bridge
231
+ {
232
+ [super setBridge:bridge];
233
+
234
+ _nodesManager = [[REANodesManager alloc] initWithModule:self uiManager:self.bridge.uiManager];
235
+ _operations = [NSMutableArray new];
236
+
237
+ [bridge.uiManager.observerCoordinator addObserver:self];
238
+ }
239
+
240
+ #pragma mark-- Batch handling
241
+
242
+ - (void)addOperationBlock:(AnimatedOperation)operation
243
+ {
244
+ [_operations addObject:operation];
245
+ }
246
+
247
+ #pragma mark - RCTUIManagerObserver
248
+
249
+ - (void)uiManagerWillPerformMounting:(RCTUIManager *)uiManager
250
+ {
251
+ [_nodesManager maybeFlushUpdateBuffer];
252
+ if (_operations.count == 0) {
253
+ return;
254
+ }
255
+
256
+ NSArray<AnimatedOperation> *operations = _operations;
257
+ _operations = [NSMutableArray new];
258
+
259
+ REANodesManager *nodesManager = _nodesManager;
260
+
261
+ [uiManager addUIBlock:^(__unused RCTUIManager *manager, __unused NSDictionary<NSNumber *, UIView *> *viewRegistry) {
262
+ for (AnimatedOperation operation in operations) {
263
+ operation(nodesManager);
264
+ }
265
+ [nodesManager operationsBatchDidComplete];
266
+ }];
267
+ }
268
+
269
+ #endif // RCT_NEW_ARCH_ENABLED
270
+
271
+ #pragma mark-- Events
272
+
273
+ - (NSArray<NSString *> *)supportedEvents
274
+ {
275
+ return @[];
276
+ }
277
+
278
+ - (void)eventDispatcherWillDispatchEvent:(id<RCTEvent>)event
279
+ {
280
+ // Events can be dispatched from any queue
281
+ [_nodesManager dispatchEvent:event];
282
+ }
283
+
284
+ @end
@@ -1,8 +1,9 @@
1
- #import <Foundation/Foundation.h>
2
-
3
1
  #import <React/RCTBridgeModule.h>
4
2
  #import <React/RCTUIManager.h>
5
- #import "REANode.h"
3
+
4
+ #ifdef RCT_NEW_ARCH_ENABLED
5
+ #import <React/RCTSurfacePresenterStub.h>
6
+ #endif
6
7
 
7
8
  @class REAModule;
8
9
 
@@ -10,6 +11,10 @@ typedef void (^REAOnAnimationCallback)(CADisplayLink *displayLink);
10
11
  typedef void (^REANativeAnimationOp)(RCTUIManager *uiManager);
11
12
  typedef void (^REAEventHandler)(NSString *eventName, id<RCTEvent> event);
12
13
 
14
+ #ifdef RCT_NEW_ARCH_ENABLED
15
+ typedef void (^REAPerformOperations)();
16
+ #endif
17
+
13
18
  @interface REANodesManager : NSObject
14
19
 
15
20
  @property (nonatomic, weak, nullable) RCTUIManager *uiManager;
@@ -19,66 +24,36 @@ typedef void (^REAEventHandler)(NSString *eventName, id<RCTEvent> event);
19
24
  @property (nonatomic, nullable) NSSet<NSString *> *uiProps;
20
25
  @property (nonatomic, nullable) NSSet<NSString *> *nativeProps;
21
26
 
22
- - (nonnull instancetype)initWithModule:(REAModule *)reanimatedModule uiManager:(nonnull RCTUIManager *)uiManager;
23
-
24
- - (REANode *_Nullable)findNodeByID:(nonnull REANodeID)nodeID;
25
-
27
+ #ifdef RCT_NEW_ARCH_ENABLED
28
+ - (nonnull instancetype)initWithModule:(REAModule *)reanimatedModule
29
+ bridge:(RCTBridge *)bridge
30
+ surfacePresenter:(id<RCTSurfacePresenterStub>)surfacePresenter;
31
+ #else
32
+ - (instancetype)initWithModule:(REAModule *)reanimatedModule uiManager:(RCTUIManager *)uiManager;
33
+ #endif
26
34
  - (void)invalidate;
27
-
28
35
  - (void)operationsBatchDidComplete;
29
36
 
30
- //
31
-
32
37
  - (void)postOnAnimation:(REAOnAnimationCallback)clb;
33
- - (void)postRunUpdatesAfterAnimation;
34
38
  - (void)registerEventHandler:(REAEventHandler)eventHandler;
35
- - (void)enqueueUpdateViewOnNativeThread:(nonnull NSNumber *)reactTag
36
- viewName:(NSString *)viewName
37
- nativeProps:(NSMutableDictionary *)nativeProps
38
- trySynchronously:(BOOL)trySync;
39
- - (void)getValue:(REANodeID)nodeID callback:(RCTResponseSenderBlock)callback;
40
-
41
- // graph
42
-
43
- - (void)createNode:(nonnull REANodeID)tag config:(NSDictionary<NSString *, id> *__nonnull)config;
44
-
45
- - (void)dropNode:(nonnull REANodeID)tag;
46
-
47
- - (void)connectNodes:(nonnull REANodeID)parentID childID:(nonnull REANodeID)childID;
48
-
49
- - (void)disconnectNodes:(nonnull REANodeID)parentID childID:(nonnull REANodeID)childID;
50
-
51
- - (void)connectNodeToView:(nonnull REANodeID)nodeID
52
- viewTag:(nonnull NSNumber *)viewTag
53
- viewName:(nonnull NSString *)viewName;
54
-
55
- - (void)disconnectNodeFromView:(nonnull REANodeID)nodeID viewTag:(nonnull NSNumber *)viewTag;
56
-
57
- - (void)attachEvent:(nonnull NSNumber *)viewTag
58
- eventName:(nonnull NSString *)eventName
59
- eventNodeID:(nonnull REANodeID)eventNodeID;
60
-
61
- - (void)detachEvent:(nonnull NSNumber *)viewTag
62
- eventName:(nonnull NSString *)eventName
63
- eventNodeID:(nonnull REANodeID)eventNodeID;
64
-
65
- // configuration
39
+ - (void)dispatchEvent:(id<RCTEvent>)event;
66
40
 
41
+ #ifdef RCT_NEW_ARCH_ENABLED
42
+ - (void)setSurfacePresenter:(id<RCTSurfacePresenterStub>)surfacePresenter;
43
+ - (void)registerPerformOperations:(REAPerformOperations)performOperations;
44
+ - (void)synchronouslyUpdateViewOnUIThread:(nonnull NSNumber *)viewTag props:(nonnull NSDictionary *)uiProps;
45
+ #else
67
46
  - (void)configureUiProps:(nonnull NSSet<NSString *> *)uiPropsSet
68
47
  andNativeProps:(nonnull NSSet<NSString *> *)nativePropsSet;
69
-
70
48
  - (void)updateProps:(nonnull NSDictionary *)props
71
49
  ofViewWithTag:(nonnull NSNumber *)viewTag
72
50
  withName:(nonnull NSString *)viewName;
73
-
74
- - (NSString *)obtainProp:(nonnull NSNumber *)viewTag propName:(nonnull NSString *)propName;
75
-
76
- // events
77
-
78
- - (void)dispatchEvent:(id<RCTEvent>)event;
79
-
80
- - (void)setValueForNodeID:(nonnull NSNumber *)nodeID value:(nonnull NSNumber *)newValue;
81
-
82
51
  - (void)maybeFlushUpdateBuffer;
52
+ - (void)enqueueUpdateViewOnNativeThread:(nonnull NSNumber *)reactTag
53
+ viewName:(NSString *)viewName
54
+ nativeProps:(NSMutableDictionary *)nativeProps
55
+ trySynchronously:(BOOL)trySync;
56
+ - (NSString *)obtainProp:(nonnull NSNumber *)viewTag propName:(nonnull NSString *)propName;
57
+ #endif
83
58
 
84
59
  @end