react-native-reanimated 3.0.0-rc.9 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/Common/cpp/AnimatedSensor/AnimatedSensorModule.cpp +30 -12
  2. package/Common/cpp/AnimatedSensor/AnimatedSensorModule.h +2 -0
  3. package/Common/cpp/Fabric/FabricUtils.cpp +3 -107
  4. package/Common/cpp/Fabric/FabricUtils.h +3 -24
  5. package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +54 -37
  6. package/Common/cpp/LayoutAnimations/LayoutAnimationType.h +8 -0
  7. package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.cpp +81 -26
  8. package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.h +20 -3
  9. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +105 -109
  10. package/Common/cpp/NativeModules/NativeReanimatedModule.h +19 -12
  11. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +15 -7
  12. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +6 -2
  13. package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.cpp +20 -1
  14. package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.h +9 -0
  15. package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.cpp +5 -1
  16. package/Common/cpp/Registries/EventHandlerRegistry.cpp +8 -34
  17. package/Common/cpp/Registries/EventHandlerRegistry.h +7 -13
  18. package/Common/cpp/SharedItems/Shareables.cpp +9 -63
  19. package/Common/cpp/SharedItems/Shareables.h +77 -72
  20. package/Common/cpp/Tools/CollectionUtils.h +14 -0
  21. package/Common/cpp/Tools/JsiUtils.cpp +26 -0
  22. package/Common/cpp/Tools/JsiUtils.h +176 -0
  23. package/Common/cpp/Tools/PlatformDepMethodsHolder.h +5 -5
  24. package/Common/cpp/Tools/ReanimatedVersion.cpp +17 -0
  25. package/Common/cpp/Tools/ReanimatedVersion.h +11 -0
  26. package/Common/cpp/Tools/RuntimeDecorator.cpp +49 -230
  27. package/Common/cpp/Tools/RuntimeDecorator.h +0 -2
  28. package/Common/cpp/Tools/WorkletEventHandler.cpp +3 -2
  29. package/Common/cpp/Tools/WorkletEventHandler.h +14 -6
  30. package/README.md +1 -1
  31. package/RNReanimated.podspec +2 -1
  32. package/android/CMakeLists.txt +188 -181
  33. package/android/build.gradle +362 -311
  34. package/android/proguard-rules.pro +2 -0
  35. package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +63 -295
  36. package/android/src/main/cpp/LayoutAnimations.cpp +35 -5
  37. package/android/src/main/cpp/LayoutAnimations.h +23 -6
  38. package/android/src/main/cpp/NativeProxy.cpp +143 -98
  39. package/android/src/main/cpp/NativeProxy.h +22 -28
  40. package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +5 -4
  41. package/android/src/main/java/com/swmansion/reanimated/Utils.java +7 -1
  42. package/android/src/main/java/com/swmansion/reanimated/keyboardObserver/ReanimatedKeyboardEventListener.java +10 -3
  43. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +218 -35
  44. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +43 -17
  45. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/NativeMethodsHolder.java +6 -2
  46. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedElement.java +19 -0
  47. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedTransitionManager.java +610 -0
  48. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/Snapshot.java +93 -23
  49. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/AnimationFrameCallback.java +19 -0
  50. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/EventHandler.java +35 -0
  51. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/KeyboardEventDataUpdater.java +16 -0
  52. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +206 -0
  53. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/SensorSetter.java +17 -0
  54. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +9 -3
  55. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorContainer.java +3 -4
  56. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorListener.java +31 -7
  57. package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +90 -307
  58. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/70/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +16 -0
  59. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +63 -0
  60. package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +271 -0
  61. package/android/src/reactNativeVersionPatch/nativeHierarchyManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +76 -20
  62. package/ios/LayoutReanimation/REAAnimationsManager.h +28 -4
  63. package/ios/LayoutReanimation/REAAnimationsManager.m +216 -61
  64. package/ios/LayoutReanimation/REAFrame.h +10 -0
  65. package/ios/LayoutReanimation/REAFrame.m +15 -0
  66. package/ios/LayoutReanimation/REAScreensHelper.h +19 -0
  67. package/ios/LayoutReanimation/REAScreensHelper.m +106 -0
  68. package/ios/LayoutReanimation/REASharedElement.h +15 -0
  69. package/ios/LayoutReanimation/REASharedElement.m +16 -0
  70. package/ios/LayoutReanimation/REASharedTransitionManager.h +17 -0
  71. package/ios/LayoutReanimation/REASharedTransitionManager.m +632 -0
  72. package/ios/LayoutReanimation/REASnapshot.h +1 -0
  73. package/ios/LayoutReanimation/REASnapshot.m +96 -11
  74. package/ios/LayoutReanimation/REAUIManager.mm +64 -17
  75. package/ios/REAModule.mm +2 -7
  76. package/ios/REANodesManager.mm +1 -21
  77. package/ios/keyboardObserver/REAKeyboardEventObserver.m +72 -36
  78. package/ios/native/NativeProxy.mm +75 -114
  79. package/ios/native/REAInitializer.mm +2 -7
  80. package/ios/native/REAJSIUtils.h +60 -2
  81. package/ios/sensor/ReanimatedSensor.h +6 -2
  82. package/ios/sensor/ReanimatedSensor.m +43 -7
  83. package/ios/sensor/ReanimatedSensorContainer.h +4 -1
  84. package/ios/sensor/ReanimatedSensorContainer.m +8 -2
  85. package/lib/commonjs/createAnimatedComponent.js +244 -28
  86. package/lib/commonjs/createAnimatedComponent.js.map +1 -1
  87. package/lib/commonjs/reanimated2/Colors.js +43 -22
  88. package/lib/commonjs/reanimated2/Colors.js.map +1 -1
  89. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +16 -33
  90. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  91. package/lib/commonjs/reanimated2/animation/styleAnimation.js +5 -1
  92. package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
  93. package/lib/commonjs/reanimated2/animation/util.js +17 -15
  94. package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
  95. package/lib/commonjs/reanimated2/commonTypes.js +33 -1
  96. package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
  97. package/lib/commonjs/reanimated2/core.js +33 -14
  98. package/lib/commonjs/reanimated2/core.js.map +1 -1
  99. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
  100. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  101. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  102. package/lib/commonjs/reanimated2/hook/index.js +0 -6
  103. package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
  104. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +5 -2
  105. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  106. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +13 -1
  107. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  108. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +1 -1
  109. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
  110. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +91 -15
  111. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  112. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +43 -40
  113. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  114. package/lib/commonjs/reanimated2/hook/useDerivedValue.js +13 -1
  115. package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
  116. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +2 -2
  117. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  118. package/lib/commonjs/reanimated2/hook/utils.js +18 -65
  119. package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
  120. package/lib/commonjs/reanimated2/index.js +13 -0
  121. package/lib/commonjs/reanimated2/index.js.map +1 -1
  122. package/lib/commonjs/reanimated2/initializers.js +71 -32
  123. package/lib/commonjs/reanimated2/initializers.js.map +1 -1
  124. package/lib/commonjs/reanimated2/interpolateColor.js +96 -19
  125. package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
  126. package/lib/commonjs/reanimated2/jestUtils.js +1 -1
  127. package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
  128. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +103 -13
  129. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  130. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +22 -0
  131. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
  132. package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js +2 -0
  133. package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js.map +1 -0
  134. package/lib/commonjs/reanimated2/js-reanimated/commonTypes.js.map +1 -1
  135. package/lib/commonjs/reanimated2/js-reanimated/global.js +0 -2
  136. package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
  137. package/lib/commonjs/reanimated2/js-reanimated/index.js +0 -1
  138. package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
  139. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +11 -0
  140. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  141. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +8 -0
  142. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  143. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +22 -9
  144. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  145. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -23
  146. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  147. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -14
  148. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  149. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -14
  150. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  151. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -15
  152. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  153. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -23
  154. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  155. package/lib/commonjs/reanimated2/layoutReanimation/index.js +13 -0
  156. package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
  157. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +94 -0
  158. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
  159. package/lib/commonjs/reanimated2/mappers.js +18 -6
  160. package/lib/commonjs/reanimated2/mappers.js.map +1 -1
  161. package/lib/commonjs/reanimated2/mock.js +20 -1
  162. package/lib/commonjs/reanimated2/mock.js.map +1 -1
  163. package/lib/commonjs/reanimated2/mutables.js +4 -2
  164. package/lib/commonjs/reanimated2/mutables.js.map +1 -1
  165. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +42 -0
  166. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +1 -0
  167. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +15 -0
  168. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
  169. package/lib/commonjs/reanimated2/pluginUtils.js +11 -0
  170. package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -0
  171. package/lib/commonjs/reanimated2/shareables.js +36 -15
  172. package/lib/commonjs/reanimated2/shareables.js.map +1 -1
  173. package/lib/commonjs/reanimated2/threads.js +114 -7
  174. package/lib/commonjs/reanimated2/threads.js.map +1 -1
  175. package/lib/commonjs/reanimated2/utils.js +7 -0
  176. package/lib/commonjs/reanimated2/utils.js.map +1 -1
  177. package/lib/commonjs/reanimated2/valueSetter.js +1 -3
  178. package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
  179. package/lib/module/createAnimatedComponent.js +241 -29
  180. package/lib/module/createAnimatedComponent.js.map +1 -1
  181. package/lib/module/reanimated2/Colors.js +35 -19
  182. package/lib/module/reanimated2/Colors.js.map +1 -1
  183. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +16 -32
  184. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  185. package/lib/module/reanimated2/animation/styleAnimation.js +5 -1
  186. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  187. package/lib/module/reanimated2/animation/util.js +17 -16
  188. package/lib/module/reanimated2/animation/util.js.map +1 -1
  189. package/lib/module/reanimated2/commonTypes.js +29 -0
  190. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  191. package/lib/module/reanimated2/core.js +32 -7
  192. package/lib/module/reanimated2/core.js.map +1 -1
  193. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
  194. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  195. package/lib/module/reanimated2/globals.d.js.map +1 -1
  196. package/lib/module/reanimated2/hook/index.js +1 -1
  197. package/lib/module/reanimated2/hook/index.js.map +1 -1
  198. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +5 -2
  199. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  200. package/lib/module/reanimated2/hook/useAnimatedReaction.js +12 -1
  201. package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  202. package/lib/module/reanimated2/hook/useAnimatedRef.js +2 -2
  203. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  204. package/lib/module/reanimated2/hook/useAnimatedSensor.js +90 -13
  205. package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  206. package/lib/module/reanimated2/hook/useAnimatedStyle.js +46 -43
  207. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  208. package/lib/module/reanimated2/hook/useDerivedValue.js +12 -1
  209. package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
  210. package/lib/module/reanimated2/hook/useScrollViewOffset.js +2 -2
  211. package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  212. package/lib/module/reanimated2/hook/utils.js +17 -60
  213. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  214. package/lib/module/reanimated2/index.js +1 -0
  215. package/lib/module/reanimated2/index.js.map +1 -1
  216. package/lib/module/reanimated2/initializers.js +72 -33
  217. package/lib/module/reanimated2/initializers.js.map +1 -1
  218. package/lib/module/reanimated2/interpolateColor.js +96 -19
  219. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  220. package/lib/module/reanimated2/jestUtils.js +1 -1
  221. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  222. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +103 -13
  223. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  224. package/lib/module/reanimated2/js-reanimated/Mapper.js +21 -0
  225. package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
  226. package/lib/module/reanimated2/js-reanimated/WebSensor.js +2 -0
  227. package/lib/module/reanimated2/js-reanimated/WebSensor.js.map +1 -0
  228. package/lib/module/reanimated2/js-reanimated/commonTypes.js.map +1 -1
  229. package/lib/module/reanimated2/js-reanimated/global.js +0 -2
  230. package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
  231. package/lib/module/reanimated2/js-reanimated/index.js +0 -1
  232. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  233. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +9 -1
  234. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  235. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js +1 -0
  236. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  237. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +20 -8
  238. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  239. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -21
  240. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  241. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -12
  242. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  243. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -12
  244. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  245. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -13
  246. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  247. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -21
  248. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  249. package/lib/module/reanimated2/layoutReanimation/index.js +1 -0
  250. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  251. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +82 -0
  252. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
  253. package/lib/module/reanimated2/mappers.js +16 -6
  254. package/lib/module/reanimated2/mappers.js.map +1 -1
  255. package/lib/module/reanimated2/mock.js +20 -1
  256. package/lib/module/reanimated2/mock.js.map +1 -1
  257. package/lib/module/reanimated2/mutables.js +4 -2
  258. package/lib/module/reanimated2/mutables.js.map +1 -1
  259. package/lib/module/reanimated2/platform-specific/checkVersion.js +35 -0
  260. package/lib/module/reanimated2/platform-specific/checkVersion.js.map +1 -0
  261. package/lib/module/reanimated2/platform-specific/checkVersion.web.js +8 -0
  262. package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
  263. package/lib/module/reanimated2/pluginUtils.js +4 -0
  264. package/lib/module/reanimated2/pluginUtils.js.map +1 -0
  265. package/lib/module/reanimated2/shareables.js +36 -12
  266. package/lib/module/reanimated2/shareables.js.map +1 -1
  267. package/lib/module/reanimated2/threads.js +105 -7
  268. package/lib/module/reanimated2/threads.js.map +1 -1
  269. package/lib/module/reanimated2/utils.js +5 -0
  270. package/lib/module/reanimated2/utils.js.map +1 -1
  271. package/lib/module/reanimated2/valueSetter.js +1 -2
  272. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  273. package/mock.js +1 -211
  274. package/package.json +10 -10
  275. package/{plugin.js → plugin/index.js} +128 -249
  276. package/react-native-reanimated.d.ts +55 -417
  277. package/scripts/reanimated_utils.rb +15 -2
  278. package/src/createAnimatedComponent.tsx +247 -28
  279. package/src/reanimated2/Colors.ts +38 -11
  280. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +52 -39
  281. package/src/reanimated2/animation/styleAnimation.ts +8 -1
  282. package/src/reanimated2/animation/util.ts +29 -16
  283. package/src/reanimated2/commonTypes.ts +28 -1
  284. package/src/reanimated2/core.ts +42 -9
  285. package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +2 -2
  286. package/src/reanimated2/globals.d.ts +12 -15
  287. package/src/reanimated2/hook/index.ts +1 -1
  288. package/src/reanimated2/hook/useAnimatedKeyboard.ts +10 -4
  289. package/src/reanimated2/hook/useAnimatedReaction.ts +12 -5
  290. package/src/reanimated2/hook/useAnimatedRef.ts +1 -4
  291. package/src/reanimated2/hook/useAnimatedSensor.ts +90 -11
  292. package/src/reanimated2/hook/useAnimatedStyle.ts +44 -36
  293. package/src/reanimated2/hook/useDerivedValue.ts +8 -1
  294. package/src/reanimated2/hook/useScrollViewOffset.ts +2 -2
  295. package/src/reanimated2/hook/utils.ts +15 -61
  296. package/src/reanimated2/index.ts +1 -0
  297. package/src/reanimated2/initializers.ts +76 -35
  298. package/src/reanimated2/interpolateColor.ts +104 -20
  299. package/src/reanimated2/jestUtils.ts +1 -1
  300. package/src/reanimated2/js-reanimated/JSReanimated.ts +98 -15
  301. package/src/reanimated2/js-reanimated/Mapper.ts +32 -0
  302. package/src/reanimated2/js-reanimated/WebSensor.ts +34 -0
  303. package/src/reanimated2/js-reanimated/commonTypes.ts +0 -1
  304. package/src/reanimated2/js-reanimated/global.ts +0 -1
  305. package/src/reanimated2/js-reanimated/index.ts +0 -1
  306. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +13 -1
  307. package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +1 -0
  308. package/src/reanimated2/layoutReanimation/animationsManager.ts +20 -9
  309. package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +16 -19
  310. package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +14 -11
  311. package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +21 -11
  312. package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +32 -11
  313. package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +36 -19
  314. package/src/reanimated2/layoutReanimation/index.ts +1 -0
  315. package/src/reanimated2/layoutReanimation/sharedTransitions/index.ts +87 -0
  316. package/src/reanimated2/mappers.ts +17 -6
  317. package/src/reanimated2/mock.ts +25 -2
  318. package/src/reanimated2/mutables.ts +2 -0
  319. package/src/reanimated2/platform-specific/checkVersion.ts +39 -0
  320. package/src/reanimated2/platform-specific/checkVersion.web.ts +6 -0
  321. package/src/reanimated2/pluginUtils.ts +8 -0
  322. package/src/reanimated2/shareables.ts +45 -16
  323. package/src/reanimated2/threads.ts +103 -4
  324. package/src/reanimated2/utils.ts +6 -0
  325. package/src/reanimated2/valueSetter.ts +1 -2
  326. package/lib/commonjs/reanimated2/time.js +0 -55
  327. package/lib/commonjs/reanimated2/time.js.map +0 -1
  328. package/lib/module/reanimated2/time.js +0 -37
  329. package/lib/module/reanimated2/time.js.map +0 -1
  330. package/src/reanimated2/time.ts +0 -30
  331. /package/android/src/{main/java → reactNativeVersionPatch/ReanimatedUIManager/70}/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +0 -0
@@ -33,7 +33,6 @@ const globals = new Set([
33
33
  'this',
34
34
  'console',
35
35
  'performance',
36
- '_chronoNow',
37
36
  'Date',
38
37
  'Array',
39
38
  'ArrayBuffer',
@@ -58,6 +57,7 @@ const globals = new Set([
58
57
  'null',
59
58
  'UIManager',
60
59
  'requestAnimationFrame',
60
+ 'setImmediate',
61
61
  '_WORKLET',
62
62
  'arguments',
63
63
  'Boolean',
@@ -84,72 +84,12 @@ const globals = new Set([
84
84
  '_dispatchCommand',
85
85
  '_setGestureState',
86
86
  '_getCurrentTime',
87
- '_eventTimestamp',
88
- '_frameTimestamp',
89
87
  'isNaN',
90
88
  'LayoutAnimationRepository',
91
89
  '_notifyAboutProgress',
92
90
  '_notifyAboutEnd',
93
91
  ]);
94
92
 
95
- // leaving way to avoid deep capturing by adding 'stopCapturing' to the blacklist
96
- const blacklistedFunctions = new Set([
97
- 'stopCapturing',
98
- 'toString',
99
- 'map',
100
- 'filter',
101
- 'findIndex',
102
- 'forEach',
103
- 'valueOf',
104
- 'toPrecision',
105
- 'toExponential',
106
- 'constructor',
107
- 'toFixed',
108
- 'toLocaleString',
109
- 'toSource',
110
- 'charAt',
111
- 'charCodeAt',
112
- 'concat',
113
- 'indexOf',
114
- 'lastIndexOf',
115
- 'localeCompare',
116
- 'length',
117
- 'match',
118
- 'replace',
119
- 'search',
120
- 'slice',
121
- 'split',
122
- 'substr',
123
- 'substring',
124
- 'toLocaleLowerCase',
125
- 'toLocaleUpperCase',
126
- 'toLowerCase',
127
- 'toUpperCase',
128
- 'every',
129
- 'join',
130
- 'pop',
131
- 'push',
132
- 'reduce',
133
- 'reduceRight',
134
- 'reverse',
135
- 'shift',
136
- 'slice',
137
- 'some',
138
- 'sort',
139
- 'splice',
140
- 'unshift',
141
- 'hasOwnProperty',
142
- 'isPrototypeOf',
143
- 'propertyIsEnumerable',
144
- 'bind',
145
- 'apply',
146
- 'call',
147
- '__callAsync',
148
- 'includes',
149
- ]);
150
-
151
- const possibleOptFunction = new Set(['interpolate']);
152
-
153
93
  const gestureHandlerGestureObjects = new Set([
154
94
  // from https://github.com/software-mansion/react-native-gesture-handler/blob/new-api/src/handlers/gestures/gestureObjects.ts
155
95
  'Tap',
@@ -179,112 +119,6 @@ const gestureHandlerBuilderMethods = new Set([
179
119
  'onTouchesCancelled',
180
120
  ]);
181
121
 
182
- class ClosureGenerator {
183
- constructor() {
184
- this.trie = [{}, false];
185
- }
186
-
187
- mergeAns(oldAns, newAns) {
188
- const [purePath, node] = oldAns;
189
- const [purePathUp, nodeUp] = newAns;
190
- if (purePathUp.length !== 0) {
191
- return [purePath.concat(purePathUp), nodeUp];
192
- } else {
193
- return [purePath, node];
194
- }
195
- }
196
-
197
- findPrefixRec(path) {
198
- const notFound = [[], null];
199
- if (!path || path.node.type !== 'MemberExpression') {
200
- return notFound;
201
- }
202
- const memberExpressionNode = path.node;
203
- if (memberExpressionNode.property.type !== 'Identifier') {
204
- return notFound;
205
- }
206
- if (
207
- memberExpressionNode.computed ||
208
- memberExpressionNode.property.name === 'value' ||
209
- blacklistedFunctions.has(memberExpressionNode.property.name)
210
- ) {
211
- // a.b[w] -> a.b.w in babel nodes
212
- // a.v.value
213
- // sth.map(() => )
214
- return notFound;
215
- }
216
- if (
217
- path.parent &&
218
- path.parent.type === 'AssignmentExpression' &&
219
- path.parent.left === path.node
220
- ) {
221
- /// captured.newProp = 5;
222
- return notFound;
223
- }
224
- const purePath = [memberExpressionNode.property.name];
225
- const node = memberExpressionNode;
226
- const upAns = this.findPrefixRec(path.parentPath);
227
- return this.mergeAns([purePath, node], upAns);
228
- }
229
-
230
- findPrefix(base, babelPath) {
231
- const purePath = [base];
232
- const node = babelPath.node;
233
- const upAns = this.findPrefixRec(babelPath.parentPath);
234
- return this.mergeAns([purePath, node], upAns);
235
- }
236
-
237
- addPath(base, babelPath) {
238
- const [purePath, node] = this.findPrefix(base, babelPath);
239
- let parent = this.trie;
240
- let index = -1;
241
- for (const current of purePath) {
242
- index++;
243
- if (parent[1]) {
244
- continue;
245
- }
246
- if (!parent[0][current]) {
247
- parent[0][current] = [{}, false];
248
- }
249
- if (index === purePath.length - 1) {
250
- parent[0][current] = [node, true];
251
- }
252
- parent = parent[0][current];
253
- }
254
- }
255
-
256
- generateNodeForBase(t, current, parent) {
257
- const currentNode = parent[0][current];
258
- if (currentNode[1]) {
259
- return currentNode[0];
260
- }
261
- return t.objectExpression(
262
- Object.keys(currentNode[0]).map((propertyName) =>
263
- t.objectProperty(
264
- t.identifier(propertyName),
265
- this.generateNodeForBase(t, propertyName, currentNode),
266
- false,
267
- true
268
- )
269
- )
270
- );
271
- }
272
-
273
- generate(t, variables, names) {
274
- const arrayOfKeys = [...names];
275
- return t.objectExpression(
276
- variables.map((variable, index) =>
277
- t.objectProperty(
278
- t.identifier(variable.name),
279
- this.generateNodeForBase(t, arrayOfKeys[index], this.trie),
280
- false,
281
- true
282
- )
283
- )
284
- );
285
- }
286
- }
287
-
288
122
  function isRelease() {
289
123
  return ['production', 'release'].includes(process.env.BABEL_ENV);
290
124
  }
@@ -370,7 +204,9 @@ function buildWorkletString(t, fun, closureVariables, name, inputMap) {
370
204
 
371
205
  const code = generate(workletFunction).code;
372
206
 
373
- if (shouldGenerateSourceMap()) {
207
+ const includeSourceMap = shouldGenerateSourceMap();
208
+
209
+ if (includeSourceMap) {
374
210
  // Clear contents array (should be empty anyways)
375
211
  inputMap.sourcesContent = [];
376
212
  // Include source contents in source map, because Flipper/iframe is not
@@ -382,8 +218,6 @@ function buildWorkletString(t, fun, closureVariables, name, inputMap) {
382
218
  }
383
219
  }
384
220
 
385
- const includeSourceMap = shouldGenerateSourceMap();
386
-
387
221
  const transformed = transformSync(code, {
388
222
  plugins: [prependClosureVariablesIfNecessary()],
389
223
  compact: !includeSourceMap,
@@ -428,8 +262,6 @@ function makeWorklet(t, fun, state) {
428
262
  const functionName = makeWorkletName(t, fun);
429
263
 
430
264
  const closure = new Map();
431
- const closureGenerator = new ClosureGenerator();
432
- const options = {};
433
265
 
434
266
  // remove 'worklet'; directive before generating string
435
267
  fun.traverse({
@@ -471,13 +303,6 @@ function makeWorklet(t, fun, state) {
471
303
  inputSourceMap: codeObject.map,
472
304
  });
473
305
 
474
- if (
475
- fun.parent &&
476
- fun.parent.callee &&
477
- fun.parent.callee.name === 'useAnimatedStyle'
478
- ) {
479
- options.optFlags = isPossibleOptimization(transformed.ast);
480
- }
481
306
  traverse(transformed.ast, {
482
307
  ReferencedIdentifier(path) {
483
308
  const name = path.node.name;
@@ -512,7 +337,6 @@ function makeWorklet(t, fun, state) {
512
337
  currentScope = currentScope.parent;
513
338
  }
514
339
  closure.set(name, path.node);
515
- closureGenerator.addPath(name, path);
516
340
  },
517
341
  });
518
342
 
@@ -552,6 +376,35 @@ function makeWorklet(t, fun, state) {
552
376
  lineOffset -= closure.size + 2;
553
377
  }
554
378
 
379
+ const pathForStringDefinitions = fun.parentPath.isProgram()
380
+ ? fun
381
+ : fun.findParent((path) => path.parentPath.isProgram());
382
+
383
+ const initDataId =
384
+ pathForStringDefinitions.parentPath.scope.generateUidIdentifier(
385
+ `worklet_${workletHash}_init_data`
386
+ );
387
+
388
+ const initDataObjectExpression = t.objectExpression([
389
+ t.objectProperty(t.identifier('code'), t.stringLiteral(funString)),
390
+ t.objectProperty(t.identifier('location'), t.stringLiteral(location)),
391
+ ]);
392
+
393
+ if (sourceMapString) {
394
+ initDataObjectExpression.properties.push(
395
+ t.objectProperty(
396
+ t.identifier('sourceMap'),
397
+ t.stringLiteral(sourceMapString)
398
+ )
399
+ );
400
+ }
401
+
402
+ pathForStringDefinitions.insertBefore(
403
+ t.variableDeclaration('const', [
404
+ t.variableDeclarator(initDataId, initDataObjectExpression),
405
+ ])
406
+ );
407
+
555
408
  const statements = [
556
409
  t.variableDeclaration('const', [
557
410
  t.variableDeclarator(privateFunctionId, funExpression),
@@ -560,14 +413,11 @@ function makeWorklet(t, fun, state) {
560
413
  t.assignmentExpression(
561
414
  '=',
562
415
  t.memberExpression(privateFunctionId, t.identifier('_closure'), false),
563
- closureGenerator.generate(t, variables, closure.keys())
564
- )
565
- ),
566
- t.expressionStatement(
567
- t.assignmentExpression(
568
- '=',
569
- t.memberExpression(privateFunctionId, t.identifier('asString'), false),
570
- t.stringLiteral(funString)
416
+ t.objectExpression(
417
+ variables.map((variable) =>
418
+ t.objectProperty(t.identifier(variable.name), variable, false, true)
419
+ )
420
+ )
571
421
  )
572
422
  ),
573
423
  t.expressionStatement(
@@ -575,10 +425,10 @@ function makeWorklet(t, fun, state) {
575
425
  '=',
576
426
  t.memberExpression(
577
427
  privateFunctionId,
578
- t.identifier('__workletHash'),
428
+ t.identifier('__initData'),
579
429
  false
580
430
  ),
581
- t.numericLiteral(workletHash)
431
+ initDataId
582
432
  )
583
433
  ),
584
434
  t.expressionStatement(
@@ -586,30 +436,14 @@ function makeWorklet(t, fun, state) {
586
436
  '=',
587
437
  t.memberExpression(
588
438
  privateFunctionId,
589
- t.identifier('__location'),
439
+ t.identifier('__workletHash'),
590
440
  false
591
441
  ),
592
- t.stringLiteral(location)
442
+ t.numericLiteral(workletHash)
593
443
  )
594
444
  ),
595
445
  ];
596
446
 
597
- if (sourceMapString) {
598
- statements.push(
599
- t.expressionStatement(
600
- t.assignmentExpression(
601
- '=',
602
- t.memberExpression(
603
- privateFunctionId,
604
- t.identifier('__sourceMap'),
605
- false
606
- ),
607
- t.stringLiteral(sourceMapString)
608
- )
609
- )
610
- );
611
- }
612
-
613
447
  if (!isRelease()) {
614
448
  statements.unshift(
615
449
  t.variableDeclaration('const', [
@@ -638,22 +472,6 @@ function makeWorklet(t, fun, state) {
638
472
  );
639
473
  }
640
474
 
641
- if (options && options.optFlags) {
642
- statements.push(
643
- t.expressionStatement(
644
- t.assignmentExpression(
645
- '=',
646
- t.memberExpression(
647
- privateFunctionId,
648
- t.identifier('__optimalization'),
649
- false
650
- ),
651
- t.numericLiteral(options.optFlags)
652
- )
653
- )
654
- );
655
- }
656
-
657
475
  statements.push(t.returnStatement(privateFunctionId));
658
476
 
659
477
  const newFun = t.functionExpression(fun.id, [], t.blockStatement(statements));
@@ -841,17 +659,14 @@ function isGestureObject(t, node) {
841
659
  }
842
660
 
843
661
  function processWorklets(t, path, state) {
844
-
845
662
  const callee =
846
663
  path.node.callee.type === 'SequenceExpression'
847
664
  ? path.node.callee.expressions[path.node.callee.expressions.length - 1]
848
665
  : path.node.callee;
849
666
 
850
667
  const name =
851
- callee.type === 'MemberExpression'
852
- ? callee.property.name
853
- : callee.name;
854
-
668
+ callee.type === 'MemberExpression' ? callee.property.name : callee.name;
669
+
855
670
  if (
856
671
  objectHooks.has(name) &&
857
672
  path.get('arguments.0').type === 'ObjectExpression'
@@ -875,30 +690,89 @@ function processWorklets(t, path, state) {
875
690
  }
876
691
  }
877
692
 
878
- const FUNCTIONLESS_FLAG = 0b00000001;
879
- const STATEMENTLESS_FLAG = 0b00000010;
693
+ function generateInlineStylesWarning(t, memberExpression) {
694
+ // replaces `sharedvalue.value` with `(()=>{console.warn(require('react-native-reanimated').getUseOfValueInStyleWarning());return sharedvalue.value;})()`
695
+ return t.callExpression(
696
+ t.arrowFunctionExpression(
697
+ [],
698
+ t.blockStatement([
699
+ t.expressionStatement(
700
+ t.callExpression(
701
+ t.memberExpression(t.identifier('console'), t.identifier('warn')),
702
+ [
703
+ t.callExpression(
704
+ t.memberExpression(
705
+ t.callExpression(t.identifier('require'), [
706
+ t.stringLiteral('react-native-reanimated'),
707
+ ]),
708
+ t.identifier('getUseOfValueInStyleWarning')
709
+ ),
710
+ []
711
+ ),
712
+ ]
713
+ )
714
+ ),
715
+ t.returnStatement(memberExpression.node),
716
+ ])
717
+ ),
718
+ []
719
+ );
720
+ }
880
721
 
881
- function isPossibleOptimization(fun) {
882
- let isFunctionCall = false;
883
- let isStatement = false;
884
- traverse(fun, {
885
- CallExpression(path) {
886
- if (!possibleOptFunction.has(path.node.callee.name)) {
887
- isFunctionCall = true;
722
+ function processPropertyValueForInlineStylesWarning(t, path) {
723
+ // if it's something like object.value then raise a warning
724
+ if (t.isMemberExpression(path)) {
725
+ if (path.get('property').node.name === 'value') {
726
+ path.replaceWith(generateInlineStylesWarning(t, path));
727
+ }
728
+ }
729
+ }
730
+
731
+ function processTransformPropertyForInlineStylesWarning(t, path) {
732
+ if (t.isArrayExpression(path)) {
733
+ const elements = path.get('elements');
734
+ for (const element of elements) {
735
+ if (t.isObjectExpression(element)) {
736
+ processStyleObjectForInlineStylesWarning(t, element);
888
737
  }
889
- },
890
- IfStatement() {
891
- isStatement = true;
892
- },
893
- });
894
- let flags = 0;
895
- if (!isFunctionCall) {
896
- flags = flags | FUNCTIONLESS_FLAG;
738
+ }
897
739
  }
898
- if (!isStatement) {
899
- flags = flags | STATEMENTLESS_FLAG;
740
+ }
741
+
742
+ function processStyleObjectForInlineStylesWarning(t, path) {
743
+ const properties = path.get('properties');
744
+ for (const property of properties) {
745
+ const value = property.get('value');
746
+ if (t.isProperty(property)) {
747
+ if (property.get('key').node.name === 'transform') {
748
+ processTransformPropertyForInlineStylesWarning(t, value);
749
+ } else {
750
+ processPropertyValueForInlineStylesWarning(t, value);
751
+ }
752
+ }
753
+ }
754
+ }
755
+
756
+ function processInlineStylesWarning(t, path, state) {
757
+ if (isRelease()) return;
758
+ if (state.opts.disableInlineStylesWarning) return;
759
+ if (path.get('name').node.name !== 'style') return;
760
+ if (!t.isJSXExpressionContainer(path.get('value'))) return;
761
+
762
+ const expression = path.get('value').get('expression');
763
+ // style={[{...}, {...}]}
764
+ if (t.isArrayExpression(expression)) {
765
+ const elements = expression.get('elements');
766
+ for (const element of elements) {
767
+ if (t.isObjectExpression(element)) {
768
+ processStyleObjectForInlineStylesWarning(t, element);
769
+ }
770
+ }
771
+ }
772
+ // style={{...}}
773
+ else if (t.isObjectExpression(expression)) {
774
+ processStyleObjectForInlineStylesWarning(t, expression);
900
775
  }
901
- return flags;
902
776
  }
903
777
 
904
778
  module.exports = function ({ types: t }) {
@@ -923,6 +797,11 @@ module.exports = function ({ types: t }) {
923
797
  processIfGestureHandlerEventCallbackFunctionNode(t, path, state);
924
798
  },
925
799
  },
800
+ JSXAttribute: {
801
+ enter(path, state) {
802
+ processInlineStylesWarning(t, path, state);
803
+ },
804
+ },
926
805
  },
927
806
  };
928
807
  };