react-native-reanimated 2.8.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 (381) 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 +18 -0
  7. package/Common/cpp/Tools/Mapper.cpp +23 -4
  8. package/Common/cpp/Tools/RuntimeDecorator.cpp +92 -32
  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 +178 -33
  29. package/android/src/main/cpp/headers/NativeProxy.h +43 -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/LayoutAnimations.java +2 -1
  33. package/android/src/{main → paper}/java/com/swmansion/reanimated/NativeProxy.java +15 -2
  34. package/android/src/paper/java/com/swmansion/reanimated/ReaCompatibility.java +17 -0
  35. package/ios/Fabric/REAInitializerRCTFabricSurface.h +12 -0
  36. package/ios/Fabric/REAInitializerRCTFabricSurface.mm +73 -0
  37. package/ios/REAEventDispatcher.m +0 -1
  38. package/ios/REAModule.h +10 -1
  39. package/ios/REAModule.mm +284 -0
  40. package/ios/REANodesManager.h +27 -51
  41. package/ios/{REANodesManager.m → REANodesManager.mm} +91 -223
  42. package/ios/native/NativeProxy.mm +144 -17
  43. package/ios/native/REAInitializer.mm +12 -4
  44. package/ios/native/UIResponder+Reanimated.h +3 -1
  45. package/ios/native/UIResponder+Reanimated.mm +3 -1
  46. package/lib/Animated.js +0 -4
  47. package/lib/createAnimatedComponent.js +30 -169
  48. package/lib/index.js +0 -4
  49. package/lib/reanimated2/Easing.js +0 -42
  50. package/lib/reanimated2/NativeMethods.js +20 -3
  51. package/lib/reanimated2/UpdateProps.js +25 -10
  52. package/lib/reanimated2/core.js +4 -1
  53. package/lib/reanimated2/fabricUtils.js +18 -0
  54. package/lib/reanimated2/globals.d.ts +17 -1
  55. package/lib/reanimated2/hook/useAnimatedRef.js +6 -2
  56. package/lib/reanimated2/hook/utils.js +0 -5
  57. package/lib/reanimated2/interpolateColor.js +5 -2
  58. package/lib/reanimated2/interpolation.js +0 -15
  59. package/lib/reanimated2/js-reanimated/index.js +3 -0
  60. package/lib/types/{lib/ConfigHelper.d.ts → ConfigHelper.d.ts} +0 -0
  61. package/lib/types/{lib/ReanimatedEventEmitter.d.ts → ReanimatedEventEmitter.d.ts} +0 -0
  62. package/lib/types/{lib/ReanimatedModule.d.ts → ReanimatedModule.d.ts} +0 -0
  63. package/lib/types/{lib/ReanimatedModule.macos.d.ts → ReanimatedModule.macos.d.ts} +0 -0
  64. package/lib/types/{lib/ReanimatedModule.native.d.ts → ReanimatedModule.native.d.ts} +0 -0
  65. package/lib/types/{lib/ReanimatedModule.windows.d.ts → ReanimatedModule.windows.d.ts} +0 -0
  66. package/lib/types/{lib/ReanimatedModuleCompat.d.ts → ReanimatedModuleCompat.d.ts} +0 -0
  67. package/lib/types/{lib/createAnimatedComponent.d.ts → createAnimatedComponent.d.ts} +0 -0
  68. package/lib/types/{lib/reanimated2 → reanimated2}/Bezier.d.ts +0 -0
  69. package/lib/types/{lib/reanimated2 → reanimated2}/Colors.d.ts +0 -0
  70. package/lib/types/{lib/reanimated2 → reanimated2}/Easing.d.ts +0 -0
  71. package/lib/types/{lib/reanimated2 → reanimated2}/NativeMethods.d.ts +2 -1
  72. package/lib/types/{lib/reanimated2 → reanimated2}/NativeReanimated/NativeReanimated.d.ts +0 -0
  73. package/lib/types/{lib/reanimated2 → reanimated2}/NativeReanimated/index.d.ts +0 -0
  74. package/lib/types/{lib/reanimated2 → reanimated2}/PlatformChecker.d.ts +0 -0
  75. package/lib/types/{lib/reanimated2 → reanimated2}/PropAdapters.d.ts +0 -0
  76. package/lib/types/{lib/reanimated2 → reanimated2}/UpdateProps.d.ts +0 -0
  77. package/lib/types/{lib/reanimated2 → reanimated2}/ViewDescriptorsSet.d.ts +0 -0
  78. package/lib/types/{lib/reanimated2 → reanimated2}/WorkletEventHandler.d.ts +0 -0
  79. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/MutableValue.d.ts +0 -0
  80. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/NativeReanimated.d.ts +0 -0
  81. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/NativeReanimated.native.d.ts +0 -0
  82. package/lib/types/{lib/reanimated2 → reanimated2}/animation/commonTypes.d.ts +0 -0
  83. package/lib/types/{lib/reanimated2 → reanimated2}/animation/decay.d.ts +0 -0
  84. package/lib/types/{lib/reanimated2 → reanimated2}/animation/delay.d.ts +0 -0
  85. package/lib/types/{lib/reanimated2 → reanimated2}/animation/index.d.ts +0 -0
  86. package/lib/types/{lib/reanimated2 → reanimated2}/animation/repeat.d.ts +0 -0
  87. package/lib/types/{lib/reanimated2 → reanimated2}/animation/sequence.d.ts +0 -0
  88. package/lib/types/{lib/reanimated2 → reanimated2}/animation/spring.d.ts +0 -0
  89. package/lib/types/{lib/reanimated2 → reanimated2}/animation/styleAnimation.d.ts +0 -0
  90. package/lib/types/{lib/reanimated2 → reanimated2}/animation/timing.d.ts +0 -0
  91. package/lib/types/{lib/reanimated2 → reanimated2}/animation/util.d.ts +0 -0
  92. package/lib/types/{lib/reanimated2 → reanimated2}/commonTypes.d.ts +2 -1
  93. package/lib/types/{lib/reanimated2 → reanimated2}/component/FlatList.d.ts +0 -0
  94. package/lib/types/{lib/reanimated2 → reanimated2}/component/WrappedComponents.d.ts +0 -0
  95. package/lib/types/{lib/reanimated2 → reanimated2}/component/index.d.ts +0 -0
  96. package/lib/types/{lib/reanimated2 → reanimated2}/core.d.ts +0 -0
  97. package/lib/types/reanimated2/fabricUtils.d.ts +4 -0
  98. package/lib/types/{lib/reanimated2 → reanimated2}/hook/Hooks.d.ts +0 -0
  99. package/lib/types/{lib/reanimated2 → reanimated2}/hook/commonTypes.d.ts +2 -1
  100. package/lib/types/{lib/reanimated2 → reanimated2}/hook/index.d.ts +1 -1
  101. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedGestureHandler.d.ts +2 -2
  102. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedReaction.d.ts +0 -0
  103. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedRef.d.ts +0 -0
  104. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedScrollHandler.d.ts +2 -2
  105. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedSensor.d.ts +0 -0
  106. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedStyle.d.ts +0 -0
  107. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useDerivedValue.d.ts +0 -0
  108. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useSharedValue.d.ts +0 -0
  109. package/lib/types/{lib/reanimated2 → reanimated2}/hook/utils.d.ts +2 -2
  110. package/lib/types/{lib/reanimated2 → reanimated2}/index.d.ts +0 -0
  111. package/lib/types/{lib/reanimated2 → reanimated2}/interpolateColor.d.ts +5 -0
  112. package/lib/types/{lib/reanimated2 → reanimated2}/interpolation.d.ts +1 -4
  113. package/lib/types/{lib/reanimated2 → reanimated2}/jestUtils.d.ts +0 -0
  114. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/JSReanimated.d.ts +0 -0
  115. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/Mapper.d.ts +0 -0
  116. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/MapperRegistry.d.ts +0 -0
  117. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/MutableValue.d.ts +0 -0
  118. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/commonTypes.d.ts +0 -0
  119. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/index.d.ts +0 -0
  120. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/LayoutAnimationRepository.d.ts +0 -0
  121. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/BaseAnimationBuilder.d.ts +0 -0
  122. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/ComplexAnimationBuilder.d.ts +0 -0
  123. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/Keyframe.d.ts +0 -0
  124. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/commonTypes.d.ts +0 -0
  125. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/index.d.ts +0 -0
  126. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Bounce.d.ts +0 -0
  127. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Default.d.ts +0 -0
  128. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Fade.d.ts +0 -0
  129. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Flip.d.ts +0 -0
  130. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Lightspeed.d.ts +0 -0
  131. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Pinwheel.d.ts +0 -0
  132. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Roll.d.ts +0 -0
  133. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Rotate.d.ts +0 -0
  134. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Slide.d.ts +0 -0
  135. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Stretch.d.ts +0 -0
  136. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Zoom.d.ts +0 -0
  137. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/index.d.ts +0 -0
  138. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/CurvedTransition.d.ts +0 -0
  139. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/EntryExitTransition.d.ts +0 -0
  140. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/FadingTransition.d.ts +0 -0
  141. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/JumpingTransition.d.ts +0 -0
  142. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/LinearTransition.d.ts +0 -0
  143. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/SequencedTransition.d.ts +0 -0
  144. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/index.d.ts +0 -0
  145. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/index.d.ts +0 -0
  146. package/lib/types/{lib/reanimated2 → reanimated2}/mock.d.ts +0 -0
  147. package/lib/types/{lib/reanimated2 → reanimated2}/platform-specific/RNRenderer.d.ts +0 -0
  148. package/lib/types/{lib/reanimated2 → reanimated2}/platform-specific/RNRenderer.web.d.ts +0 -0
  149. package/lib/types/{lib/reanimated2 → reanimated2}/utils.d.ts +0 -0
  150. package/lib/types/{lib/setAndForwardRef.d.ts → setAndForwardRef.d.ts} +0 -0
  151. package/package.json +7 -5
  152. package/plugin.js +4 -1
  153. package/src/Animated.js +0 -4
  154. package/src/createAnimatedComponent.tsx +37 -197
  155. package/src/reanimated2/Easing.ts +0 -53
  156. package/src/reanimated2/NativeMethods.ts +39 -7
  157. package/src/reanimated2/UpdateProps.ts +38 -19
  158. package/src/reanimated2/commonTypes.ts +4 -1
  159. package/src/reanimated2/component/FlatList.tsx +8 -5
  160. package/src/reanimated2/core.ts +7 -1
  161. package/src/reanimated2/fabricUtils.ts +27 -0
  162. package/src/reanimated2/globals.d.ts +17 -1
  163. package/src/reanimated2/hook/commonTypes.ts +4 -2
  164. package/src/reanimated2/hook/index.ts +1 -1
  165. package/src/reanimated2/hook/useAnimatedGestureHandler.ts +2 -2
  166. package/src/reanimated2/hook/useAnimatedRef.ts +8 -3
  167. package/src/reanimated2/hook/useAnimatedScrollHandler.ts +2 -2
  168. package/src/reanimated2/hook/utils.ts +2 -11
  169. package/src/reanimated2/interpolateColor.ts +6 -2
  170. package/src/reanimated2/interpolation.ts +1 -26
  171. package/src/reanimated2/js-reanimated/index.ts +5 -0
  172. package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  173. package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
  174. package/android/.gradle/7.2/executionHistory/executionHistory.bin +0 -0
  175. package/android/.gradle/7.2/executionHistory/executionHistory.lock +0 -0
  176. package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
  177. package/android/.gradle/7.2/fileHashes/fileHashes.bin +0 -0
  178. package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
  179. package/android/.gradle/7.2/fileHashes/resourceHashesCache.bin +0 -0
  180. package/android/.gradle/7.2/gc.properties +0 -0
  181. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  182. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  183. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  184. package/android/.gradle/checksums/checksums.lock +0 -0
  185. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  186. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  187. package/android/.gradle/vcs-1/gc.properties +0 -0
  188. package/android/react-native-reanimated-64-hermes.aar +0 -0
  189. package/android/react-native-reanimated-64-jsc.aar +0 -0
  190. package/android/react-native-reanimated-65-hermes.aar +0 -0
  191. package/android/react-native-reanimated-65-jsc.aar +0 -0
  192. package/android/react-native-reanimated-66-hermes.aar +0 -0
  193. package/android/react-native-reanimated-66-jsc.aar +0 -0
  194. package/android/react-native-reanimated-67-hermes.aar +0 -0
  195. package/android/react-native-reanimated-67-jsc.aar +0 -0
  196. package/android/react-native-reanimated-68-hermes.aar +0 -0
  197. package/android/react-native-reanimated-68-jsc.aar +0 -0
  198. package/android/src/main/java/com/swmansion/reanimated/UpdateContext.java +0 -11
  199. package/android/src/main/java/com/swmansion/reanimated/nodes/AlwaysNode.java +0 -29
  200. package/android/src/main/java/com/swmansion/reanimated/nodes/BezierNode.java +0 -87
  201. package/android/src/main/java/com/swmansion/reanimated/nodes/BlockNode.java +0 -24
  202. package/android/src/main/java/com/swmansion/reanimated/nodes/CallFuncNode.java +0 -49
  203. package/android/src/main/java/com/swmansion/reanimated/nodes/ClockNode.java +0 -38
  204. package/android/src/main/java/com/swmansion/reanimated/nodes/ClockOpNode.java +0 -73
  205. package/android/src/main/java/com/swmansion/reanimated/nodes/ConcatNode.java +0 -36
  206. package/android/src/main/java/com/swmansion/reanimated/nodes/CondNode.java +0 -41
  207. package/android/src/main/java/com/swmansion/reanimated/nodes/DebugNode.java +0 -33
  208. package/android/src/main/java/com/swmansion/reanimated/nodes/EventNode.java +0 -83
  209. package/android/src/main/java/com/swmansion/reanimated/nodes/FinalNode.java +0 -5
  210. package/android/src/main/java/com/swmansion/reanimated/nodes/FunctionNode.java +0 -20
  211. package/android/src/main/java/com/swmansion/reanimated/nodes/JSCallNode.java +0 -41
  212. package/android/src/main/java/com/swmansion/reanimated/nodes/Node.java +0 -139
  213. package/android/src/main/java/com/swmansion/reanimated/nodes/NoopNode.java +0 -37
  214. package/android/src/main/java/com/swmansion/reanimated/nodes/OperatorNode.java +0 -377
  215. package/android/src/main/java/com/swmansion/reanimated/nodes/ParamNode.java +0 -71
  216. package/android/src/main/java/com/swmansion/reanimated/nodes/PropsNode.java +0 -153
  217. package/android/src/main/java/com/swmansion/reanimated/nodes/SetNode.java +0 -32
  218. package/android/src/main/java/com/swmansion/reanimated/nodes/StyleNode.java +0 -40
  219. package/android/src/main/java/com/swmansion/reanimated/nodes/TransformNode.java +0 -84
  220. package/android/src/main/java/com/swmansion/reanimated/nodes/ValueNode.java +0 -40
  221. package/android/src/main/java/com/swmansion/reanimated/transitions/ChangeTransition.java +0 -84
  222. package/android/src/main/java/com/swmansion/reanimated/transitions/SaneSidePropagation.java +0 -25
  223. package/android/src/main/java/com/swmansion/reanimated/transitions/Scale.java +0 -86
  224. package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionModule.java +0 -41
  225. package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionUtils.java +0 -161
  226. package/ios/Nodes/REAAlwaysNode.h +0 -4
  227. package/ios/Nodes/REAAlwaysNode.m +0 -35
  228. package/ios/Nodes/REABezierNode.h +0 -5
  229. package/ios/Nodes/REABezierNode.m +0 -103
  230. package/ios/Nodes/REABlockNode.h +0 -5
  231. package/ios/Nodes/REABlockNode.m +0 -25
  232. package/ios/Nodes/REACallFuncNode.h +0 -6
  233. package/ios/Nodes/REACallFuncNode.m +0 -69
  234. package/ios/Nodes/REAClockNodes.h +0 -19
  235. package/ios/Nodes/REAClockNodes.m +0 -118
  236. package/ios/Nodes/REAConcatNode.h +0 -5
  237. package/ios/Nodes/REAConcatNode.m +0 -32
  238. package/ios/Nodes/REACondNode.h +0 -5
  239. package/ios/Nodes/REACondNode.m +0 -36
  240. package/ios/Nodes/READebugNode.h +0 -5
  241. package/ios/Nodes/READebugNode.m +0 -30
  242. package/ios/Nodes/REAEventNode.h +0 -8
  243. package/ios/Nodes/REAEventNode.m +0 -35
  244. package/ios/Nodes/REAFunctionNode.h +0 -6
  245. package/ios/Nodes/REAFunctionNode.m +0 -24
  246. package/ios/Nodes/REAJSCallNode.h +0 -5
  247. package/ios/Nodes/REAJSCallNode.m +0 -30
  248. package/ios/Nodes/REANode.h +0 -40
  249. package/ios/Nodes/REANode.m +0 -155
  250. package/ios/Nodes/REAOperatorNode.h +0 -5
  251. package/ios/Nodes/REAOperatorNode.m +0 -114
  252. package/ios/Nodes/REAParamNode.h +0 -10
  253. package/ios/Nodes/REAParamNode.m +0 -79
  254. package/ios/Nodes/REAPropsNode.h +0 -9
  255. package/ios/Nodes/REAPropsNode.m +0 -96
  256. package/ios/Nodes/REASetNode.h +0 -5
  257. package/ios/Nodes/REASetNode.m +0 -34
  258. package/ios/Nodes/REAStyleNode.h +0 -5
  259. package/ios/Nodes/REAStyleNode.m +0 -27
  260. package/ios/Nodes/REATransformNode.h +0 -5
  261. package/ios/Nodes/REATransformNode.m +0 -36
  262. package/ios/Nodes/REAValueNode.h +0 -9
  263. package/ios/Nodes/REAValueNode.m +0 -26
  264. package/ios/REAModule.m +0 -184
  265. package/ios/Transitioning/RCTConvert+REATransition.h +0 -11
  266. package/ios/Transitioning/RCTConvert+REATransition.m +0 -53
  267. package/ios/Transitioning/REAAllTransitions.h +0 -26
  268. package/ios/Transitioning/REAAllTransitions.m +0 -296
  269. package/ios/Transitioning/REATransition.h +0 -64
  270. package/ios/Transitioning/REATransition.m +0 -210
  271. package/ios/Transitioning/REATransitionAnimation.h +0 -17
  272. package/ios/Transitioning/REATransitionAnimation.m +0 -79
  273. package/ios/Transitioning/REATransitionManager.h +0 -9
  274. package/ios/Transitioning/REATransitionManager.m +0 -60
  275. package/ios/Transitioning/REATransitionValues.h +0 -15
  276. package/ios/Transitioning/REATransitionValues.m +0 -25
  277. package/lib/reanimated1/Easing.js +0 -231
  278. package/lib/reanimated1/SpringConfig.js +0 -79
  279. package/lib/reanimated1/Transitioning.js +0 -158
  280. package/lib/reanimated1/animations/Animation.js +0 -32
  281. package/lib/reanimated1/animations/SpringUtils.js +0 -199
  282. package/lib/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
  283. package/lib/reanimated1/animations/decay.js +0 -54
  284. package/lib/reanimated1/animations/spring.js +0 -198
  285. package/lib/reanimated1/animations/timing.js +0 -74
  286. package/lib/reanimated1/base.js +0 -13
  287. package/lib/reanimated1/core/AnimatedAlways.js +0 -33
  288. package/lib/reanimated1/core/AnimatedBezier.js +0 -150
  289. package/lib/reanimated1/core/AnimatedBlock.js +0 -52
  290. package/lib/reanimated1/core/AnimatedCall.js +0 -55
  291. package/lib/reanimated1/core/AnimatedCallFunc.js +0 -72
  292. package/lib/reanimated1/core/AnimatedClock.js +0 -90
  293. package/lib/reanimated1/core/AnimatedClockTest.js +0 -22
  294. package/lib/reanimated1/core/AnimatedCode.js +0 -32
  295. package/lib/reanimated1/core/AnimatedConcat.js +0 -32
  296. package/lib/reanimated1/core/AnimatedCond.js +0 -57
  297. package/lib/reanimated1/core/AnimatedDebug.js +0 -62
  298. package/lib/reanimated1/core/AnimatedEvent.js +0 -126
  299. package/lib/reanimated1/core/AnimatedFunction.js +0 -55
  300. package/lib/reanimated1/core/AnimatedNode.js +0 -223
  301. package/lib/reanimated1/core/AnimatedOperator.js +0 -103
  302. package/lib/reanimated1/core/AnimatedParam.js +0 -88
  303. package/lib/reanimated1/core/AnimatedProps.js +0 -108
  304. package/lib/reanimated1/core/AnimatedSet.js +0 -38
  305. package/lib/reanimated1/core/AnimatedStartClock.js +0 -30
  306. package/lib/reanimated1/core/AnimatedStopClock.js +0 -30
  307. package/lib/reanimated1/core/AnimatedStyle.js +0 -78
  308. package/lib/reanimated1/core/AnimatedTransform.js +0 -78
  309. package/lib/reanimated1/core/AnimatedValue.js +0 -38
  310. package/lib/reanimated1/core/Core.test.js +0 -30
  311. package/lib/reanimated1/core/InternalAnimatedValue.js +0 -87
  312. package/lib/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
  313. package/lib/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
  314. package/lib/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
  315. package/lib/reanimated1/derived/acc.js +0 -11
  316. package/lib/reanimated1/derived/color.js +0 -47
  317. package/lib/reanimated1/derived/diff.js +0 -16
  318. package/lib/reanimated1/derived/diffClamp.js +0 -11
  319. package/lib/reanimated1/derived/evaluateOnce.js +0 -35
  320. package/lib/reanimated1/derived/index.js +0 -8
  321. package/lib/reanimated1/derived/interpolate.js +0 -152
  322. package/lib/reanimated1/derived/interpolateColors.js +0 -62
  323. package/lib/reanimated1/derived/onChange.js +0 -14
  324. package/lib/reanimated1/derived/useCode.js +0 -41
  325. package/lib/reanimated1/index.js +0 -53
  326. package/lib/reanimated1/operators.js +0 -35
  327. package/lib/reanimated1/useValue.js +0 -10
  328. package/lib/reanimated1/val.js +0 -3
  329. package/lib/types/react-native-reanimated-tests.d.ts +0 -1
  330. package/src/reanimated1/Easing.js +0 -231
  331. package/src/reanimated1/SpringConfig.js +0 -79
  332. package/src/reanimated1/Transitioning.js +0 -158
  333. package/src/reanimated1/animations/Animation.js +0 -32
  334. package/src/reanimated1/animations/SpringUtils.js +0 -199
  335. package/src/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
  336. package/src/reanimated1/animations/decay.js +0 -54
  337. package/src/reanimated1/animations/spring.js +0 -198
  338. package/src/reanimated1/animations/timing.js +0 -74
  339. package/src/reanimated1/base.js +0 -13
  340. package/src/reanimated1/core/AnimatedAlways.js +0 -33
  341. package/src/reanimated1/core/AnimatedBezier.js +0 -150
  342. package/src/reanimated1/core/AnimatedBlock.js +0 -52
  343. package/src/reanimated1/core/AnimatedCall.js +0 -55
  344. package/src/reanimated1/core/AnimatedCallFunc.js +0 -72
  345. package/src/reanimated1/core/AnimatedClock.js +0 -90
  346. package/src/reanimated1/core/AnimatedClockTest.js +0 -22
  347. package/src/reanimated1/core/AnimatedCode.js +0 -32
  348. package/src/reanimated1/core/AnimatedConcat.js +0 -32
  349. package/src/reanimated1/core/AnimatedCond.js +0 -57
  350. package/src/reanimated1/core/AnimatedDebug.js +0 -62
  351. package/src/reanimated1/core/AnimatedEvent.js +0 -126
  352. package/src/reanimated1/core/AnimatedFunction.js +0 -55
  353. package/src/reanimated1/core/AnimatedNode.js +0 -223
  354. package/src/reanimated1/core/AnimatedOperator.js +0 -103
  355. package/src/reanimated1/core/AnimatedParam.js +0 -88
  356. package/src/reanimated1/core/AnimatedProps.js +0 -108
  357. package/src/reanimated1/core/AnimatedSet.js +0 -38
  358. package/src/reanimated1/core/AnimatedStartClock.js +0 -30
  359. package/src/reanimated1/core/AnimatedStopClock.js +0 -30
  360. package/src/reanimated1/core/AnimatedStyle.js +0 -78
  361. package/src/reanimated1/core/AnimatedTransform.js +0 -78
  362. package/src/reanimated1/core/AnimatedValue.js +0 -38
  363. package/src/reanimated1/core/Core.test.js +0 -30
  364. package/src/reanimated1/core/InternalAnimatedValue.js +0 -87
  365. package/src/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
  366. package/src/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
  367. package/src/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
  368. package/src/reanimated1/derived/acc.js +0 -11
  369. package/src/reanimated1/derived/color.js +0 -47
  370. package/src/reanimated1/derived/diff.js +0 -16
  371. package/src/reanimated1/derived/diffClamp.js +0 -11
  372. package/src/reanimated1/derived/evaluateOnce.js +0 -35
  373. package/src/reanimated1/derived/index.js +0 -8
  374. package/src/reanimated1/derived/interpolate.js +0 -152
  375. package/src/reanimated1/derived/interpolateColors.js +0 -62
  376. package/src/reanimated1/derived/onChange.js +0 -14
  377. package/src/reanimated1/derived/useCode.js +0 -41
  378. package/src/reanimated1/index.js +0 -53
  379. package/src/reanimated1/operators.js +0 -35
  380. package/src/reanimated1/useValue.js +0 -10
  381. package/src/reanimated1/val.js +0 -3
@@ -25,7 +25,12 @@ void EventHandlerRegistry::unregisterEventHandler(unsigned long id) {
25
25
  void EventHandlerRegistry::processEvent(
26
26
  jsi::Runtime &rt,
27
27
  std::string eventName,
28
- std::string eventPayload) {
28
+ #ifdef RCT_NEW_ARCH_ENABLED
29
+ jsi::Value &eventPayload
30
+ #else
31
+ std::string eventPayload
32
+ #endif
33
+ /**/) {
29
34
  std::vector<std::shared_ptr<WorkletEventHandler>> handlersForEvent;
30
35
  {
31
36
  const std::lock_guard<std::mutex> lock(instanceMutex);
@@ -36,6 +41,13 @@ void EventHandlerRegistry::processEvent(
36
41
  }
37
42
  }
38
43
  }
44
+ #ifdef RCT_NEW_ARCH_ENABLED
45
+ eventPayload.asObject(rt).setProperty(
46
+ rt, "eventName", jsi::String::createFromUtf8(rt, eventName));
47
+ for (auto handler : handlersForEvent) {
48
+ handler->process(rt, eventPayload);
49
+ }
50
+ #else
39
51
  // We receive here a JS Map with JSON as a value of NativeMap key
40
52
  // { NativeMap: { "jsonProp": "json value" } }
41
53
  // So we need to extract only JSON part
@@ -57,6 +69,7 @@ void EventHandlerRegistry::processEvent(
57
69
  for (auto handler : handlersForEvent) {
58
70
  handler->process(rt, eventObject);
59
71
  }
72
+ #endif
60
73
  }
61
74
 
62
75
  bool EventHandlerRegistry::isAnyHandlerWaitingForEvent(std::string eventName) {
@@ -0,0 +1,68 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
2
+
3
+ #include "NewestShadowNodesRegistry.h"
4
+
5
+ #include <react/renderer/core/ComponentDescriptor.h>
6
+ #include <react/renderer/core/ShadowNodeFragment.h>
7
+
8
+ using namespace facebook::react;
9
+
10
+ namespace reanimated {
11
+
12
+ void NewestShadowNodesRegistry::set(
13
+ ShadowNode::Shared shadowNode,
14
+ Tag parentTag) {
15
+ map_[shadowNode->getTag()] = std::make_pair(shadowNode, parentTag);
16
+ }
17
+
18
+ bool NewestShadowNodesRegistry::has(
19
+ const ShadowNode::Shared &shadowNode) const {
20
+ return map_.find(shadowNode->getTag()) != map_.cend();
21
+ }
22
+
23
+ ShadowNode::Shared NewestShadowNodesRegistry::get(Tag tag) const {
24
+ const auto it = map_.find(tag);
25
+ return it != map_.cend() ? it->second.first : nullptr;
26
+ }
27
+
28
+ void NewestShadowNodesRegistry::update(ShadowNode::Shared shadowNode) {
29
+ const auto it = map_.find(shadowNode->getTag());
30
+ react_native_assert(it != map_.cend());
31
+ it->second.first = shadowNode;
32
+ }
33
+
34
+ void NewestShadowNodesRegistry::remove(Tag tag) {
35
+ if (map_.find(tag) == map_.cend()) {
36
+ return;
37
+ }
38
+
39
+ auto shadowNode = map_[tag].first;
40
+
41
+ while (shadowNode != nullptr) {
42
+ bool hasAnyChildInMap = false;
43
+ for (const auto &child : shadowNode->getChildren()) {
44
+ if (has(child)) {
45
+ hasAnyChildInMap = true;
46
+ break;
47
+ }
48
+ }
49
+
50
+ if (hasAnyChildInMap) {
51
+ break;
52
+ }
53
+
54
+ auto it = map_.find(shadowNode->getTag());
55
+ Tag parentTag = it->second.second;
56
+ map_.erase(it);
57
+
58
+ shadowNode = map_[parentTag].first;
59
+ }
60
+ }
61
+
62
+ std::lock_guard<std::mutex> NewestShadowNodesRegistry::createLock() const {
63
+ return std::lock_guard<std::mutex>(mutex_);
64
+ }
65
+
66
+ } // namespace reanimated
67
+
68
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -1,4 +1,9 @@
1
1
  #include <cxxabi.h>
2
+
3
+ #ifdef RCT_NEW_ARCH_ENABLED
4
+ #include <react/renderer/uimanager/primitives.h>
5
+ #endif
6
+
2
7
  #include "FrozenObject.h"
3
8
  #include "MutableValue.h"
4
9
  #include "MutableValueSetterProxy.h"
@@ -157,6 +162,13 @@ void ShareableValue::adapt(
157
162
  valueContainer =
158
163
  std::make_unique<RemoteObjectWrapper>(std::make_shared<RemoteObject>(
159
164
  rt, object, runtimeManager, runtimeManager->scheduler));
165
+ #ifdef RCT_NEW_ARCH_ENABLED
166
+ } else if (object.isHostObject<ShadowNodeWrapper>(rt)) {
167
+ type = ValueType::ShadowNodeType;
168
+ auto shadowNode = object.getHostObject<ShadowNodeWrapper>(rt)->shadowNode;
169
+ valueContainer = std::make_unique<ShadowNodeValueWrapper>(shadowNode);
170
+ adaptCache(rt, value);
171
+ #endif
160
172
  } else {
161
173
  // create frozen object based on a copy of a given object
162
174
  type = ValueType::FrozenObjectType;
@@ -278,6 +290,12 @@ jsi::Value ShareableValue::toJSValue(jsi::Runtime &rt) {
278
290
  auto &mutableObject = ValueWrapper::asMutableValue(valueContainer);
279
291
  return createHost(rt, mutableObject);
280
292
  }
293
+ #ifdef RCT_NEW_ARCH_ENABLED
294
+ case ValueType::ShadowNodeType: {
295
+ auto &shadowNode = ValueWrapper::asShadowNode(valueContainer);
296
+ return createHost(rt, std::make_shared<ShadowNodeWrapper>(shadowNode));
297
+ }
298
+ #endif
281
299
  case ValueType::HostFunctionType: {
282
300
  auto hostFunctionWrapper =
283
301
  ValueWrapper::asHostFunctionWrapper(valueContainer);
@@ -25,7 +25,11 @@ void Mapper::execute(jsi::Runtime &rt) {
25
25
  if (optimalizationLvl == 0) {
26
26
  mapper->callWithThis(rt, *mapper); // call styleUpdater
27
27
  } else {
28
+ #ifdef RCT_NEW_ARCH_ENABLED
29
+ jsi::Value newStyle = userUpdater->call(rt).asObject(rt);
30
+ #else
28
31
  jsi::Object newStyle = userUpdater->call(rt).asObject(rt);
32
+ #endif
29
33
  auto jsViewDescriptorArray = viewDescriptors->getValue(rt)
30
34
  .getObject(rt)
31
35
  .getProperty(rt, "value")
@@ -34,11 +38,16 @@ void Mapper::execute(jsi::Runtime &rt) {
34
38
  for (int i = 0; i < jsViewDescriptorArray.length(rt); ++i) {
35
39
  auto jsViewDescriptor =
36
40
  jsViewDescriptorArray.getValueAtIndex(rt, i).getObject(rt);
37
- (*updateProps)(
41
+ #ifdef RCT_NEW_ARCH_ENABLED
42
+ updateProps(
43
+ rt, jsViewDescriptor.getProperty(rt, "shadowNodeWrapper"), newStyle);
44
+ #else
45
+ updateProps(
38
46
  rt,
39
47
  static_cast<int>(jsViewDescriptor.getProperty(rt, "tag").asNumber()),
40
48
  jsViewDescriptor.getProperty(rt, "name"),
41
49
  newStyle);
50
+ #endif
42
51
  }
43
52
  }
44
53
  }
@@ -52,10 +61,20 @@ void Mapper::enableFastMode(
52
61
  }
53
62
  viewDescriptors = jsViewDescriptors;
54
63
  this->optimalizationLvl = optimalizationLvl;
55
- updateProps = &module->updaterFunction;
56
- jsi::Runtime *rt = module->runtime.get();
64
+ #ifdef RCT_NEW_ARCH_ENABLED
65
+ updateProps = [this](
66
+ jsi::Runtime &rt,
67
+ const jsi::Value &shadowNodeValue,
68
+ const jsi::Value &props) {
69
+ this->module->updateProps(rt, shadowNodeValue, props);
70
+ };
71
+ #else
72
+ // TODO: don't get public field, instead call this->module->updateProps
73
+ updateProps = module->updatePropsFunction;
74
+ #endif
75
+ jsi::Runtime &rt = *module->runtime;
57
76
  userUpdater = std::make_shared<jsi::Function>(
58
- updater->getValue(*rt).asObject(*rt).asFunction(*rt));
77
+ updater->getValue(rt).asObject(rt).asFunction(rt));
59
78
  }
60
79
 
61
80
  Mapper::~Mapper() {
@@ -90,10 +90,15 @@ void RuntimeDecorator::decorateRuntime(
90
90
 
91
91
  void RuntimeDecorator::decorateUIRuntime(
92
92
  jsi::Runtime &rt,
93
- const UpdaterFunction updater,
94
- const RequestFrameFunction requestFrame,
93
+ const UpdatePropsFunction updateProps,
94
+ const MeasureFunction measure,
95
+ #ifdef RCT_NEW_ARCH_ENABLED
96
+ const RemoveShadowNodeFromRegistryFunction removeShadowNodeFromRegistry,
97
+ const DispatchCommandFunction dispatchCommand,
98
+ #else
95
99
  const ScrollToFunction scrollTo,
96
- const MeasuringFunction measure,
100
+ #endif
101
+ const RequestFrameFunction requestFrame,
97
102
  const TimeProviderFunction getCurrentTime,
98
103
  const RegisterSensorFunction registerSensor,
99
104
  const UnregisterSensorFunction unregisterSensor,
@@ -102,42 +107,79 @@ void RuntimeDecorator::decorateUIRuntime(
102
107
  RuntimeDecorator::decorateRuntime(rt, "UI");
103
108
  rt.global().setProperty(rt, "_UI", jsi::Value(true));
104
109
 
105
- auto clb = [updater](
110
+ #ifdef RCT_NEW_ARCH_ENABLED
111
+ auto clb = [updateProps](
106
112
  jsi::Runtime &rt,
107
113
  const jsi::Value &thisValue,
108
114
  const jsi::Value *args,
109
115
  const size_t count) -> jsi::Value {
110
- const auto viewTag = args[0].asNumber();
111
- const jsi::Value *viewName = &args[1];
112
- const auto params = args[2].asObject(rt);
113
- updater(rt, viewTag, *viewName, params);
116
+ updateProps(rt, args[0], args[1]);
114
117
  return jsi::Value::undefined();
115
118
  };
116
- jsi::Value updateProps = jsi::Function::createFromHostFunction(
117
- rt, jsi::PropNameID::forAscii(rt, "_updateProps"), 2, clb);
118
- rt.global().setProperty(rt, "_updateProps", updateProps);
119
+ jsi::Value updatePropsHostFunction = jsi::Function::createFromHostFunction(
120
+ rt, jsi::PropNameID::forAscii(rt, "_updatePropsFabric"), 2, clb);
121
+ rt.global().setProperty(rt, "_updatePropsFabric", updatePropsHostFunction);
119
122
 
120
- auto clb2 = [requestFrame](
121
- jsi::Runtime &rt,
122
- const jsi::Value &thisValue,
123
- const jsi::Value *args,
124
- const size_t count) -> jsi::Value {
125
- auto fun =
126
- std::make_shared<jsi::Function>(args[0].asObject(rt).asFunction(rt));
127
- requestFrame([&rt, fun](double timestampMs) {
128
- fun->call(rt, jsi::Value(timestampMs));
129
- });
123
+ auto _removeShadowNodeFromRegistry = [removeShadowNodeFromRegistry](
124
+ jsi::Runtime &rt,
125
+ const jsi::Value &thisValue,
126
+ const jsi::Value *args,
127
+ const size_t count) -> jsi::Value {
128
+ removeShadowNodeFromRegistry(rt, args[0]);
130
129
  return jsi::Value::undefined();
131
130
  };
132
- jsi::Value requestAnimationFrame = jsi::Function::createFromHostFunction(
133
- rt, jsi::PropNameID::forAscii(rt, "requestAnimationFrame"), 1, clb2);
134
- rt.global().setProperty(rt, "requestAnimationFrame", requestAnimationFrame);
131
+ jsi::Value removeShadowNodeFromRegistryHostFunction =
132
+ jsi::Function::createFromHostFunction(
133
+ rt,
134
+ jsi::PropNameID::forAscii(rt, "_removeShadowNodeFromRegistry"),
135
+ 2,
136
+ _removeShadowNodeFromRegistry);
137
+ rt.global().setProperty(
138
+ rt,
139
+ "_removeShadowNodeFromRegistry",
140
+ removeShadowNodeFromRegistryHostFunction);
135
141
 
136
- auto clb3 = [scrollTo](
142
+ auto clb3 = [dispatchCommand](
137
143
  jsi::Runtime &rt,
138
144
  const jsi::Value &thisValue,
139
145
  const jsi::Value *args,
140
146
  const size_t count) -> jsi::Value {
147
+ dispatchCommand(rt, args[0], args[1], args[2]);
148
+ return jsi::Value::undefined();
149
+ };
150
+ jsi::Value dispatchCommandHostFunction =
151
+ jsi::Function::createFromHostFunction(
152
+ rt, jsi::PropNameID::forAscii(rt, "_dispatchCommand"), 3, clb3);
153
+ rt.global().setProperty(rt, "_dispatchCommand", dispatchCommandHostFunction);
154
+
155
+ auto _measure = [measure](
156
+ jsi::Runtime &rt,
157
+ const jsi::Value &thisValue,
158
+ const jsi::Value *args,
159
+ const size_t count) -> jsi::Value {
160
+ return measure(rt, args[0]);
161
+ };
162
+ #else
163
+ auto clb = [updateProps](
164
+ jsi::Runtime &rt,
165
+ const jsi::Value &thisValue,
166
+ const jsi::Value *args,
167
+ const size_t count) -> jsi::Value {
168
+ const auto viewTag = args[0].asNumber();
169
+ const jsi::Value *viewName = &args[1];
170
+ const auto params = args[2].asObject(rt);
171
+ updateProps(rt, viewTag, *viewName, params);
172
+ return jsi::Value::undefined();
173
+ };
174
+ jsi::Value updatePropsHostFunction = jsi::Function::createFromHostFunction(
175
+ rt, jsi::PropNameID::forAscii(rt, "_updatePropsPaper"), 3, clb);
176
+ rt.global().setProperty(rt, "_updatePropsPaper", updatePropsHostFunction);
177
+
178
+ auto _scrollTo = [scrollTo](
179
+ jsi::Runtime &rt,
180
+ const jsi::Value &thisValue,
181
+ const jsi::Value *args,
182
+ const size_t count) -> jsi::Value {
141
183
  int viewTag = static_cast<int>(args[0].asNumber());
142
184
  double x = args[1].asNumber();
143
185
  double y = args[2].asNumber();
@@ -146,14 +188,14 @@ void RuntimeDecorator::decorateUIRuntime(
146
188
  return jsi::Value::undefined();
147
189
  };
148
190
  jsi::Value scrollToFunction = jsi::Function::createFromHostFunction(
149
- rt, jsi::PropNameID::forAscii(rt, "_scrollTo"), 4, clb3);
191
+ rt, jsi::PropNameID::forAscii(rt, "_scrollTo"), 4, _scrollTo);
150
192
  rt.global().setProperty(rt, "_scrollTo", scrollToFunction);
151
193
 
152
- auto clb4 = [measure](
153
- jsi::Runtime &rt,
154
- const jsi::Value &thisValue,
155
- const jsi::Value *args,
156
- const size_t count) -> jsi::Value {
194
+ auto _measure = [measure](
195
+ jsi::Runtime &rt,
196
+ const jsi::Value &thisValue,
197
+ const jsi::Value *args,
198
+ const size_t count) -> jsi::Value {
157
199
  int viewTag = static_cast<int>(args[0].asNumber());
158
200
  auto result = measure(viewTag);
159
201
  jsi::Object resultObject(rt);
@@ -162,10 +204,28 @@ void RuntimeDecorator::decorateUIRuntime(
162
204
  }
163
205
  return resultObject;
164
206
  };
207
+ #endif // RCT_NEW_ARCH_ENABLED
208
+
165
209
  jsi::Value measureFunction = jsi::Function::createFromHostFunction(
166
- rt, jsi::PropNameID::forAscii(rt, "_measure"), 1, clb4);
210
+ rt, jsi::PropNameID::forAscii(rt, "_measure"), 1, _measure);
167
211
  rt.global().setProperty(rt, "_measure", measureFunction);
168
212
 
213
+ auto clb2 = [requestFrame](
214
+ jsi::Runtime &rt,
215
+ const jsi::Value &thisValue,
216
+ const jsi::Value *args,
217
+ const size_t count) -> jsi::Value {
218
+ auto fun =
219
+ std::make_shared<jsi::Function>(args[0].asObject(rt).asFunction(rt));
220
+ requestFrame([&rt, fun](double timestampMs) {
221
+ fun->call(rt, jsi::Value(timestampMs));
222
+ });
223
+ return jsi::Value::undefined();
224
+ };
225
+ jsi::Value requestAnimationFrame = jsi::Function::createFromHostFunction(
226
+ rt, jsi::PropNameID::forAscii(rt, "requestAnimationFrame"), 1, clb2);
227
+ rt.global().setProperty(rt, "requestAnimationFrame", requestAnimationFrame);
228
+
169
229
  auto clb6 = [getCurrentTime](
170
230
  jsi::Runtime &rt,
171
231
  const jsi::Value &thisValue,
@@ -1,4 +1,8 @@
1
+ #ifdef __APPLE__
2
+ #include <RNReanimated/Scheduler.h>
3
+ #else
1
4
  #include "Scheduler.h"
5
+ #endif
2
6
 
3
7
  namespace reanimated {
4
8
 
@@ -0,0 +1,78 @@
1
+ #pragma once
2
+ #ifdef RCT_NEW_ARCH_ENABLED
3
+
4
+ #ifdef ANDROID
5
+ #include <Binding.h>
6
+ #include <fbjni/fbjni.h>
7
+ #endif
8
+ #include <react/renderer/uimanager/UIManager.h>
9
+
10
+ #include <memory>
11
+ #include <string>
12
+
13
+ using namespace facebook::react;
14
+
15
+ namespace reanimated {
16
+
17
+ struct UIManagerBindingPublic {
18
+ void *vtable;
19
+ std::shared_ptr<UIManager> uiManager_;
20
+ };
21
+
22
+ struct UIManagerPublic {
23
+ void *vtable;
24
+ SharedComponentDescriptorRegistry componentDescriptorRegistry_;
25
+ UIManagerDelegate *delegate_;
26
+ UIManagerAnimationDelegate *animationDelegate_{nullptr};
27
+ RuntimeExecutor const runtimeExecutor_{};
28
+ ShadowTreeRegistry shadowTreeRegistry_{};
29
+ BackgroundExecutor const backgroundExecutor_{};
30
+ ContextContainer::Shared contextContainer_;
31
+ };
32
+
33
+ #ifdef ANDROID
34
+ struct BindingPublic : public jni::HybridClass<Binding>,
35
+ public SchedulerDelegate,
36
+ public LayoutAnimationStatusDelegate {
37
+ butter::shared_mutex installMutex_;
38
+ std::shared_ptr<FabricMountingManager> mountingManager_;
39
+ std::shared_ptr<facebook::react::Scheduler> scheduler_;
40
+ };
41
+
42
+ struct SchedulerPublic : public UIManagerDelegate {
43
+ SchedulerDelegate *delegate_;
44
+ SharedComponentDescriptorRegistry componentDescriptorRegistry_;
45
+ RuntimeExecutor runtimeExecutor_;
46
+ };
47
+
48
+ RuntimeExecutor getRuntimeExecutorFromBinding(Binding *binding);
49
+ #endif
50
+
51
+ std::shared_ptr<const ContextContainer> getContextContainerFromUIManager(
52
+ const UIManager *uiManager);
53
+
54
+ void UIManager_dispatchCommand(
55
+ const std::shared_ptr<UIManager> &uiManager,
56
+ const ShadowNode::Shared &shadowNode,
57
+ std::string const &commandName,
58
+ folly::dynamic const &args);
59
+
60
+ LayoutMetrics UIManager_getRelativeLayoutMetrics(
61
+ const std::shared_ptr<UIManager> &uiManager,
62
+ ShadowNode const &shadowNode,
63
+ ShadowNode const *ancestorShadowNode,
64
+ LayoutableShadowNode::LayoutInspectingPolicy policy);
65
+
66
+ SharedShadowNode UIManager_cloneNode(
67
+ const UIManager *uiManager,
68
+ const ShadowNode::Shared &shadowNode,
69
+ const SharedShadowNodeSharedList &children = nullptr,
70
+ const RawProps *rawProps = nullptr);
71
+
72
+ void UIManager_appendChild(
73
+ const ShadowNode::Shared &parentShadowNode,
74
+ const ShadowNode::Shared &childShadowNode);
75
+
76
+ } // namespace reanimated
77
+
78
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -0,0 +1,46 @@
1
+ #pragma once
2
+ #ifdef RCT_NEW_ARCH_ENABLED
3
+
4
+ #include <ReactCommon/RuntimeExecutor.h>
5
+ #include <jsi/jsi.h>
6
+ #include <react/renderer/uimanager/UIManager.h>
7
+ #include <react/renderer/uimanager/UIManagerBinding.h>
8
+ #include <react/renderer/uimanager/primitives.h>
9
+
10
+ #include <memory>
11
+
12
+ #include "NewestShadowNodesRegistry.h"
13
+
14
+ using namespace facebook;
15
+ using namespace react;
16
+
17
+ namespace reanimated {
18
+
19
+ class ReanimatedUIManagerBinding : public UIManagerBinding {
20
+ public:
21
+ static void createAndInstallIfNeeded(
22
+ jsi::Runtime &runtime,
23
+ RuntimeExecutor const &runtimeExecutor,
24
+ std::shared_ptr<UIManager> const &uiManager,
25
+ std::shared_ptr<NewestShadowNodesRegistry> const
26
+ &newestShadowNodesRegistry);
27
+
28
+ ReanimatedUIManagerBinding(
29
+ std::shared_ptr<UIManager> uiManager,
30
+ RuntimeExecutor runtimeExecutor,
31
+ std::shared_ptr<NewestShadowNodesRegistry> newestShadowNodesRegistry);
32
+
33
+ ~ReanimatedUIManagerBinding();
34
+
35
+ void invalidate() const;
36
+
37
+ jsi::Value get(jsi::Runtime &runtime, jsi::PropNameID const &name) override;
38
+
39
+ private:
40
+ std::shared_ptr<UIManager> uiManager_;
41
+ std::shared_ptr<NewestShadowNodesRegistry> newestShadowNodesRegistry_;
42
+ };
43
+
44
+ } // namespace reanimated
45
+
46
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -1,8 +1,14 @@
1
1
  #pragma once
2
2
 
3
- #include <unistd.h>
3
+ #ifdef RCT_NEW_ARCH_ENABLED
4
+ #include <react/renderer/uimanager/UIManager.h>
5
+ #include "NewestShadowNodesRegistry.h"
6
+ #endif
7
+
4
8
  #include <memory>
5
9
  #include <string>
10
+ #include <unordered_set>
11
+ #include <utility>
6
12
  #include <vector>
7
13
 
8
14
  #include "AnimatedSensorModule.h"
@@ -34,8 +40,12 @@ class NativeReanimatedModule : public NativeReanimatedModuleSpec,
34
40
  std::shared_ptr<Scheduler> scheduler,
35
41
  std::shared_ptr<jsi::Runtime> rt,
36
42
  std::shared_ptr<ErrorHandler> errorHandler,
43
+ #ifdef RCT_NEW_ARCH_ENABLED
44
+ // nothing
45
+ #else
37
46
  std::function<jsi::Value(jsi::Runtime &, const int, const jsi::String &)>
38
47
  propObtainer,
48
+ #endif
39
49
  std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy,
40
50
  PlatformDepMethodsHolder platformDepMethodsHolder);
41
51
 
@@ -77,11 +87,48 @@ class NativeReanimatedModule : public NativeReanimatedModuleSpec,
77
87
  const jsi::Value &nativeProps) override;
78
88
 
79
89
  void onRender(double timestampMs);
90
+ #ifdef RCT_NEW_ARCH_ENABLED
91
+ void onEvent(std::string eventName, jsi::Value &&eventAsString);
92
+ #else
80
93
  void onEvent(std::string eventName, std::string eventAsString);
94
+ #endif
81
95
  bool isAnyHandlerWaitingForEvent(std::string eventName);
82
96
 
83
97
  void maybeRequestRender();
84
- UpdaterFunction updaterFunction;
98
+ UpdatePropsFunction updatePropsFunction;
99
+
100
+ bool handleEvent(
101
+ const std::string &eventName,
102
+ jsi::Value &&payload,
103
+ double currentTime);
104
+
105
+ #ifdef RCT_NEW_ARCH_ENABLED
106
+ bool handleRawEvent(const RawEvent &rawEvent, double currentTime);
107
+
108
+ void updateProps(
109
+ jsi::Runtime &rt,
110
+ const jsi::Value &shadowNodeValue,
111
+ const jsi::Value &props);
112
+
113
+ void removeShadowNodeFromRegistry(
114
+ jsi::Runtime &rt,
115
+ const jsi::Value &shadowNodeValue);
116
+
117
+ void performOperations();
118
+
119
+ void dispatchCommand(
120
+ jsi::Runtime &rt,
121
+ const jsi::Value &shadowNodeValue,
122
+ const jsi::Value &commandNameValue,
123
+ const jsi::Value &argsValue);
124
+
125
+ jsi::Value measure(jsi::Runtime &rt, const jsi::Value &shadowNodeValue);
126
+
127
+ void setUIManager(std::shared_ptr<UIManager> uiManager);
128
+
129
+ void setNewestShadowNodesRegistry(
130
+ std::shared_ptr<NewestShadowNodesRegistry> newestShadowNodesRegistry);
131
+ #endif
85
132
 
86
133
  jsi::Value registerSensor(
87
134
  jsi::Runtime &rt,
@@ -91,6 +138,10 @@ class NativeReanimatedModule : public NativeReanimatedModuleSpec,
91
138
  void unregisterSensor(jsi::Runtime &rt, const jsi::Value &sensorId) override;
92
139
 
93
140
  private:
141
+ #ifdef RCT_NEW_ARCH_ENABLED
142
+ bool isThereAnyLayoutProp(jsi::Runtime &rt, const jsi::Value &props);
143
+ #endif // RCT_NEW_ARCH_ENABLED
144
+
94
145
  std::shared_ptr<MapperRegistry> mapperRegistry;
95
146
  std::shared_ptr<EventHandlerRegistry> eventHandlerRegistry;
96
147
  std::function<void(FrameCallback &, jsi::Runtime &)> requestRender;
@@ -103,6 +154,25 @@ class NativeReanimatedModule : public NativeReanimatedModuleSpec,
103
154
  std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy;
104
155
  AnimatedSensorModule animatedSensorModule;
105
156
  ConfigurePropsFunction configurePropsPlatformFunction;
157
+
158
+ #ifdef RCT_NEW_ARCH_ENABLED
159
+ SynchronouslyUpdateUIPropsFunction synchronouslyUpdateUIPropsFunction;
160
+
161
+ std::shared_ptr<UIManager> uiManager_;
162
+
163
+ // After app reload, surfaceId on iOS is still 1 but on Android it's 11.
164
+ // We can store surfaceId of the most recent ShadowNode as a workaround.
165
+ SurfaceId surfaceId_ = -1;
166
+
167
+ std::vector<std::pair<ShadowNode::Shared, std::unique_ptr<jsi::Value>>>
168
+ operationsInBatch_; // TODO: refactor std::pair to custom struct
169
+
170
+ std::shared_ptr<NewestShadowNodesRegistry> newestShadowNodesRegistry_;
171
+
172
+ std::vector<Tag> tagsToRemove_; // from newestShadowNodesRegistry_
173
+ #endif
174
+
175
+ std::unordered_set<std::string> nativePropNames_; // filled by configureProps
106
176
  };
107
177
 
108
178
  } // namespace reanimated
@@ -27,10 +27,18 @@ class EventHandlerRegistry {
27
27
  void registerEventHandler(std::shared_ptr<WorkletEventHandler> eventHandler);
28
28
  void unregisterEventHandler(unsigned long id);
29
29
 
30
+ #ifdef RCT_NEW_ARCH_ENABLED
31
+ void processEvent(
32
+ jsi::Runtime &rt,
33
+ std::string eventName,
34
+ jsi::Value &eventPayload);
35
+ #else
30
36
  void processEvent(
31
37
  jsi::Runtime &rt,
32
38
  std::string eventName,
33
39
  std::string eventPayload);
40
+ #endif
41
+
34
42
  bool isAnyHandlerWaitingForEvent(std::string eventName);
35
43
  };
36
44
 
@@ -0,0 +1,41 @@
1
+ #pragma once
2
+ #ifdef RCT_NEW_ARCH_ENABLED
3
+
4
+ #include <react/renderer/core/ShadowNode.h>
5
+ #include <memory>
6
+ #include <unordered_map>
7
+ #include <utility>
8
+
9
+ using namespace facebook::react;
10
+
11
+ namespace reanimated {
12
+
13
+ class NewestShadowNodesRegistry {
14
+ public:
15
+ std::lock_guard<std::mutex> createLock() const;
16
+ // returns a lock you need to hold when calling any of the methods below
17
+
18
+ void set(ShadowNode::Shared shadowNode, Tag parentTag);
19
+ // updates ShadowNode and sets parent tag, to be called from Reanimated
20
+
21
+ bool has(const ShadowNode::Shared &shadowNode) const;
22
+ // checks if ShadowNode exists in the registry
23
+
24
+ ShadowNode::Shared get(Tag tag) const;
25
+ // returns the most recent version of ShadowNode or nullptr if not found
26
+
27
+ void update(ShadowNode::Shared shadowNode);
28
+ // updates ShadowNode that already exists in registry, to be called from RN
29
+
30
+ void remove(Tag tag);
31
+ // removes ShadowNode from map along with its ancestors
32
+
33
+ private:
34
+ std::unordered_map<Tag, std::pair<ShadowNode::Shared, Tag>> map_;
35
+ // tag -> (most recent clone of shadow node, parent tag)
36
+ mutable std::mutex mutex_; // Protects `map_`.
37
+ };
38
+
39
+ } // namespace reanimated
40
+
41
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -17,6 +17,9 @@ enum class ValueType {
17
17
  WorkletFunctionType, // function that gets run on the UI thread
18
18
  FrozenObjectType, // frozen object, can only be set and never modified
19
19
  FrozenArrayType, // frozen array, can only be set and never modified
20
+ #ifdef RCT_NEW_ARCH_ENABLED
21
+ ShadowNodeType, // ShadowNode::Shared
22
+ #endif // RCT_NEW_ARCH_ENABLED
20
23
  };
21
24
 
22
25
  class ShareableValue;