react-native-reanimated 2.4.0 → 2.6.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 (437) hide show
  1. package/Common/cpp/AnimatedSensor/AnimatedSensorModule.cpp +72 -0
  2. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +30 -1
  3. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +64 -39
  4. package/Common/cpp/Tools/RuntimeDecorator.cpp +2 -0
  5. package/Common/cpp/headers/AnimatedSensor/AnimatedSensorModule.h +41 -0
  6. package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +14 -0
  7. package/Common/cpp/headers/NativeModules/NativeReanimatedModuleSpec.h +14 -0
  8. package/Common/cpp/headers/SharedItems/MutableValue.h +4 -1
  9. package/Common/cpp/headers/SharedItems/ShareableValue.h +3 -0
  10. package/Common/cpp/headers/SharedItems/ValueWrapper.h +3 -0
  11. package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +11 -0
  12. package/Common/cpp/headers/Tools/RuntimeDecorator.h +2 -0
  13. package/LICENSE +1 -1
  14. package/README.md +2 -2
  15. package/RNReanimated.podspec +15 -6
  16. package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  17. package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
  18. package/android/.gradle/7.2/executionHistory/executionHistory.bin +0 -0
  19. package/android/.gradle/7.2/executionHistory/executionHistory.lock +0 -0
  20. package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
  21. package/android/.gradle/7.2/fileHashes/fileHashes.bin +0 -0
  22. package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
  23. package/android/.gradle/7.2/fileHashes/resourceHashesCache.bin +0 -0
  24. package/android/.gradle/7.2/gc.properties +0 -0
  25. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  26. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  27. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  28. package/android/.gradle/checksums/checksums.lock +0 -0
  29. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  30. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  31. package/android/.gradle/vcs-1/gc.properties +0 -0
  32. package/android/CMakeLists.txt +198 -0
  33. package/android/README.md +15 -0
  34. package/android/build.gradle +676 -73
  35. package/android/empty.cpp +1 -0
  36. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  37. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  38. package/android/gradle.properties +25 -0
  39. package/android/gradlew +234 -0
  40. package/android/gradlew.bat +89 -0
  41. package/android/react-native-reanimated-64-hermes.aar +0 -0
  42. package/android/react-native-reanimated-64-jsc.aar +0 -0
  43. package/android/react-native-reanimated-65-hermes.aar +0 -0
  44. package/android/react-native-reanimated-65-jsc.aar +0 -0
  45. package/android/react-native-reanimated-66-hermes.aar +0 -0
  46. package/android/react-native-reanimated-66-jsc.aar +0 -0
  47. package/android/react-native-reanimated-67-hermes.aar +0 -0
  48. package/android/react-native-reanimated-67-jsc.aar +0 -0
  49. package/android/react-native-reanimated-68-hermes.aar +0 -0
  50. package/android/react-native-reanimated-68-jsc.aar +0 -0
  51. package/android/rnVersionPatch/62/layoutReanimation/ReanimatedNativeHierarchyManager.java +412 -0
  52. package/android/rnVersionPatch/62/layoutReanimation/ReanimatedUIImplementation.java +68 -0
  53. package/android/rnVersionPatch/63/layoutReanimation/ReanimatedUIImplementation.java +68 -0
  54. package/android/rnVersionPatch/64/layoutReanimation/ReanimatedUIImplementation.java +68 -0
  55. package/android/rnVersionPatch/65/.gitkeep +0 -0
  56. package/android/rnVersionPatch/66/.gitkeep +0 -0
  57. package/android/rnVersionPatch/67/.gitkeep +0 -0
  58. package/android/rnVersionPatch/68/.gitkeep +0 -0
  59. package/android/rnVersionPatch/backup/.gitkeep +0 -0
  60. package/android/settings.gradle +1 -0
  61. package/android/spotless.gradle +9 -0
  62. package/android/src/{AndroidManifest.xml → main/AndroidManifest.xml} +0 -0
  63. package/android/src/main/cpp/AndroidErrorHandler.cpp +42 -0
  64. package/android/src/main/cpp/AndroidLogger.cpp +27 -0
  65. package/android/src/main/cpp/AndroidScheduler.cpp +59 -0
  66. package/android/src/main/cpp/JNIHelper.cpp +59 -0
  67. package/android/src/main/cpp/LayoutAnimations.cpp +103 -0
  68. package/android/src/main/cpp/NativeProxy.cpp +327 -0
  69. package/android/src/main/cpp/OnLoad.cpp +17 -0
  70. package/android/src/main/cpp/TurboModule.cpp +44 -0
  71. package/android/src/main/cpp/headers/AndroidErrorHandler.h +30 -0
  72. package/android/src/main/cpp/headers/AndroidLogger.h +16 -0
  73. package/android/src/main/cpp/headers/AndroidScheduler.h +41 -0
  74. package/android/src/main/cpp/headers/JNIHelper.h +30 -0
  75. package/android/src/main/cpp/headers/LayoutAnimations.h +42 -0
  76. package/android/src/main/cpp/headers/NativeProxy.h +170 -0
  77. package/android/src/main/cpp/headers/TurboModule.h +70 -0
  78. package/android/src/main/java/com/facebook/react/uimanager/UIManagerReanimatedHelper.java +15 -0
  79. package/android/src/main/java/com/swmansion/common/GestureHandlerStateManager.java +5 -0
  80. package/android/src/main/java/com/swmansion/reanimated/AndroidErrorHandler.java +8 -0
  81. package/android/src/main/java/com/swmansion/reanimated/CopiedEvent.java +43 -0
  82. package/android/src/main/java/com/swmansion/reanimated/MapUtils.java +26 -0
  83. package/android/src/main/java/com/swmansion/reanimated/NativeMethodsHelper.java +117 -0
  84. package/android/src/main/java/com/swmansion/reanimated/NativeProxy.java +285 -0
  85. package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +682 -0
  86. package/android/src/main/java/com/swmansion/reanimated/ReanimatedJSIModulePackage.java +29 -0
  87. package/android/src/main/java/com/swmansion/reanimated/ReanimatedModule.java +251 -0
  88. package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +96 -0
  89. package/android/src/main/java/com/swmansion/reanimated/Scheduler.java +51 -0
  90. package/android/src/main/java/com/swmansion/reanimated/UpdateContext.java +11 -0
  91. package/android/src/main/java/com/swmansion/reanimated/Utils.java +32 -0
  92. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +517 -0
  93. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +56 -0
  94. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/NativeMethodsHolder.java +11 -0
  95. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +410 -0
  96. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedUIImplementation.java +68 -0
  97. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +292 -0
  98. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/Snapshot.java +121 -0
  99. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ViewHierarchyObserver.java +12 -0
  100. package/android/src/main/java/com/swmansion/reanimated/nodes/AlwaysNode.java +29 -0
  101. package/android/src/main/java/com/swmansion/reanimated/nodes/BezierNode.java +87 -0
  102. package/android/src/main/java/com/swmansion/reanimated/nodes/BlockNode.java +24 -0
  103. package/android/src/main/java/com/swmansion/reanimated/nodes/CallFuncNode.java +49 -0
  104. package/android/src/main/java/com/swmansion/reanimated/nodes/ClockNode.java +38 -0
  105. package/android/src/main/java/com/swmansion/reanimated/nodes/ClockOpNode.java +73 -0
  106. package/android/src/main/java/com/swmansion/reanimated/nodes/ConcatNode.java +36 -0
  107. package/android/src/main/java/com/swmansion/reanimated/nodes/CondNode.java +41 -0
  108. package/android/src/main/java/com/swmansion/reanimated/nodes/DebugNode.java +33 -0
  109. package/android/src/main/java/com/swmansion/reanimated/nodes/EventNode.java +83 -0
  110. package/android/src/main/java/com/swmansion/reanimated/nodes/FinalNode.java +5 -0
  111. package/android/src/main/java/com/swmansion/reanimated/nodes/FunctionNode.java +20 -0
  112. package/android/src/main/java/com/swmansion/reanimated/nodes/JSCallNode.java +41 -0
  113. package/android/src/main/java/com/swmansion/reanimated/nodes/Node.java +139 -0
  114. package/android/src/main/java/com/swmansion/reanimated/nodes/NoopNode.java +37 -0
  115. package/android/src/main/java/com/swmansion/reanimated/nodes/OperatorNode.java +377 -0
  116. package/android/src/main/java/com/swmansion/reanimated/nodes/ParamNode.java +71 -0
  117. package/android/src/main/java/com/swmansion/reanimated/nodes/PropsNode.java +153 -0
  118. package/android/src/main/java/com/swmansion/reanimated/nodes/SetNode.java +32 -0
  119. package/android/src/main/java/com/swmansion/reanimated/nodes/StyleNode.java +40 -0
  120. package/android/src/main/java/com/swmansion/reanimated/nodes/TransformNode.java +84 -0
  121. package/android/src/main/java/com/swmansion/reanimated/nodes/ValueNode.java +40 -0
  122. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +41 -0
  123. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorContainer.java +40 -0
  124. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorListener.java +31 -0
  125. package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorType.java +35 -0
  126. package/android/src/main/java/com/swmansion/reanimated/transitions/ChangeTransition.java +84 -0
  127. package/android/src/main/java/com/swmansion/reanimated/transitions/SaneSidePropagation.java +25 -0
  128. package/android/src/main/java/com/swmansion/reanimated/transitions/Scale.java +86 -0
  129. package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionModule.java +41 -0
  130. package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionUtils.java +161 -0
  131. package/ios/LayoutReanimation/REAAnimationsManager.m +14 -4
  132. package/ios/REAModule.m +8 -9
  133. package/ios/REANodesManager.h +4 -1
  134. package/ios/REANodesManager.m +76 -4
  135. package/ios/native/NativeProxy.mm +76 -4
  136. package/ios/sensor/ReanimatedSensor.h +25 -0
  137. package/ios/sensor/ReanimatedSensor.m +217 -0
  138. package/ios/sensor/ReanimatedSensorContainer.h +12 -0
  139. package/ios/sensor/ReanimatedSensorContainer.m +40 -0
  140. package/ios/sensor/ReanimatedSensorType.h +7 -0
  141. package/lib/{src/Animated.js → Animated.js} +0 -0
  142. package/lib/{src/ConfigHelper.js → ConfigHelper.js} +2 -2
  143. package/lib/{src/ReanimatedEventEmitter.js → ReanimatedEventEmitter.js} +0 -0
  144. package/lib/{src/ReanimatedModule.js → ReanimatedModule.js} +0 -0
  145. package/lib/{src/ReanimatedModule.macos.js → ReanimatedModule.macos.js} +0 -0
  146. package/lib/{src/ReanimatedModule.native.js → ReanimatedModule.native.js} +0 -0
  147. package/lib/{src/ReanimatedModule.windows.js → ReanimatedModule.windows.js} +0 -0
  148. package/lib/{src/ReanimatedModuleCompat.js → ReanimatedModuleCompat.js} +0 -0
  149. package/lib/{src/__mocks__ → __mocks__}/ReanimatedEventEmitter.js +0 -0
  150. package/lib/{src/__mocks__ → __mocks__}/ReanimatedModule.native.js +0 -0
  151. package/lib/{src/createAnimatedComponent.js → createAnimatedComponent.js} +3 -4
  152. package/lib/{src/index.js → index.js} +0 -0
  153. package/lib/{src/reanimated1 → reanimated1}/Easing.js +0 -0
  154. package/lib/{src/reanimated1 → reanimated1}/SpringConfig.js +0 -0
  155. package/lib/{src/reanimated1 → reanimated1}/Transitioning.js +0 -0
  156. package/lib/{src/reanimated1 → reanimated1}/animations/Animation.js +0 -0
  157. package/lib/{src/reanimated1 → reanimated1}/animations/SpringUtils.js +0 -0
  158. package/lib/{src/reanimated1 → reanimated1}/animations/backwardCompatibleAnimWrapper.js +0 -0
  159. package/lib/{src/reanimated1 → reanimated1}/animations/decay.js +0 -0
  160. package/lib/{src/reanimated1 → reanimated1}/animations/spring.js +0 -0
  161. package/lib/{src/reanimated1 → reanimated1}/animations/timing.js +0 -0
  162. package/lib/{src/reanimated1 → reanimated1}/base.js +0 -0
  163. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedAlways.js +0 -0
  164. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedBezier.js +0 -0
  165. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedBlock.js +0 -0
  166. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedCall.js +0 -0
  167. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedCallFunc.js +0 -0
  168. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedClock.js +0 -0
  169. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedClockTest.js +0 -0
  170. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedCode.js +0 -0
  171. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedConcat.js +0 -0
  172. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedCond.js +0 -0
  173. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedDebug.js +0 -0
  174. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedEvent.js +0 -0
  175. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedFunction.js +1 -1
  176. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedNode.js +0 -0
  177. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedOperator.js +0 -0
  178. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedParam.js +0 -0
  179. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedProps.js +0 -0
  180. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedSet.js +0 -0
  181. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedStartClock.js +0 -0
  182. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedStopClock.js +0 -0
  183. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedStyle.js +0 -0
  184. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedTransform.js +0 -0
  185. package/lib/{src/reanimated1 → reanimated1}/core/AnimatedValue.js +0 -0
  186. package/lib/{src/reanimated1 → reanimated1}/core/Core.test.js +0 -0
  187. package/lib/{src/reanimated1 → reanimated1}/core/InternalAnimatedValue.js +0 -0
  188. package/lib/{src/reanimated1 → reanimated1}/core/__mocks__/AnimatedProps.js +0 -0
  189. package/lib/{src/reanimated1 → reanimated1}/core/createEventObjectProxyPolyfill.js +0 -0
  190. package/lib/{src/reanimated1 → reanimated1}/derived/__mocks__/evaluateOnce.js +0 -0
  191. package/lib/{src/reanimated1 → reanimated1}/derived/acc.js +0 -0
  192. package/lib/{src/reanimated1 → reanimated1}/derived/color.js +0 -0
  193. package/lib/{src/reanimated1 → reanimated1}/derived/diff.js +0 -0
  194. package/lib/{src/reanimated1 → reanimated1}/derived/diffClamp.js +0 -0
  195. package/lib/{src/reanimated1 → reanimated1}/derived/evaluateOnce.js +0 -0
  196. package/lib/{src/reanimated1 → reanimated1}/derived/index.js +0 -0
  197. package/lib/{src/reanimated1 → reanimated1}/derived/interpolate.js +2 -4
  198. package/lib/{src/reanimated1 → reanimated1}/derived/interpolateColors.js +0 -0
  199. package/lib/{src/reanimated1 → reanimated1}/derived/onChange.js +0 -0
  200. package/lib/{src/reanimated1 → reanimated1}/derived/useCode.js +0 -0
  201. package/lib/{src/reanimated1 → reanimated1}/index.js +0 -0
  202. package/lib/{src/reanimated1 → reanimated1}/operators.js +0 -0
  203. package/lib/{src/reanimated1 → reanimated1}/useValue.js +0 -0
  204. package/lib/{src/reanimated1 → reanimated1}/val.js +0 -0
  205. package/lib/{src/reanimated2 → reanimated2}/Bezier.js +0 -0
  206. package/lib/{src/reanimated2 → reanimated2}/Colors.js +2 -1
  207. package/lib/{src/reanimated2 → reanimated2}/Easing.js +0 -0
  208. package/lib/{src/reanimated2 → reanimated2}/NativeMethods.js +0 -0
  209. package/lib/reanimated2/NativeReanimated/NativeReanimated.js +50 -0
  210. package/lib/{src/reanimated2 → reanimated2}/NativeReanimated/index.js +0 -4
  211. package/lib/{src/reanimated2 → reanimated2}/PlatformChecker.js +0 -0
  212. package/lib/{src/reanimated2 → reanimated2}/PropAdapters.js +0 -0
  213. package/lib/{src/reanimated2 → reanimated2}/UpdateProps.js +0 -0
  214. package/lib/{src/reanimated2 → reanimated2}/ViewDescriptorsSet.js +2 -2
  215. package/lib/{src/reanimated2 → reanimated2}/WorkletEventHandler.js +0 -0
  216. package/lib/{src/reanimated2 → reanimated2}/__mocks__/MutableValue.js +0 -0
  217. package/lib/{src/reanimated2 → reanimated2}/__mocks__/NativeReanimated.js +0 -0
  218. package/lib/{src/reanimated2 → reanimated2}/__mocks__/NativeReanimated.native.js +0 -0
  219. package/lib/{src/reanimated2 → reanimated2}/animation/commonTypes.js +0 -0
  220. package/lib/{src/reanimated2 → reanimated2}/animation/decay.js +0 -0
  221. package/lib/{src/reanimated2 → reanimated2}/animation/delay.js +0 -0
  222. package/lib/{src/reanimated2 → reanimated2}/animation/index.js +0 -0
  223. package/lib/{src/reanimated2 → reanimated2}/animation/repeat.js +0 -0
  224. package/lib/{src/reanimated2 → reanimated2}/animation/sequence.js +0 -0
  225. package/lib/{src/reanimated2 → reanimated2}/animation/spring.js +0 -0
  226. package/lib/{src/reanimated2 → reanimated2}/animation/styleAnimation.js +2 -1
  227. package/lib/{src/reanimated2 → reanimated2}/animation/timing.js +0 -0
  228. package/lib/{src/reanimated2 → reanimated2}/animation/util.js +0 -0
  229. package/lib/{src/reanimated2 → reanimated2}/commonTypes.js +0 -0
  230. package/lib/{src/reanimated2 → reanimated2}/component/FlatList.js +0 -0
  231. package/lib/{src/reanimated2 → reanimated2}/component/WrappedComponents.js +0 -0
  232. package/lib/{src/reanimated2 → reanimated2}/component/index.js +0 -0
  233. package/lib/{src/reanimated2 → reanimated2}/core.js +30 -24
  234. package/lib/{src/reanimated2 → reanimated2}/globals.d.ts +6 -0
  235. package/lib/{src/reanimated2 → reanimated2}/hook/Hooks.js +0 -0
  236. package/lib/{src/reanimated2 → reanimated2}/hook/commonTypes.js +0 -0
  237. package/lib/{src/reanimated2 → reanimated2}/hook/index.js +1 -0
  238. package/lib/{src/reanimated2 → reanimated2}/hook/useAnimatedGestureHandler.js +0 -0
  239. package/lib/{src/reanimated2 → reanimated2}/hook/useAnimatedReaction.js +0 -0
  240. package/lib/{src/reanimated2 → reanimated2}/hook/useAnimatedRef.js +0 -0
  241. package/lib/{src/reanimated2 → reanimated2}/hook/useAnimatedScrollHandler.js +0 -0
  242. package/lib/reanimated2/hook/useAnimatedSensor.js +66 -0
  243. package/lib/{src/reanimated2 → reanimated2}/hook/useAnimatedStyle.js +0 -0
  244. package/lib/{src/reanimated2 → reanimated2}/hook/useDerivedValue.js +0 -0
  245. package/lib/{src/reanimated2 → reanimated2}/hook/useSharedValue.js +0 -0
  246. package/lib/{src/reanimated2 → reanimated2}/hook/utils.js +0 -0
  247. package/lib/{src/reanimated2 → reanimated2}/index.js +0 -0
  248. package/lib/{src/reanimated2 → reanimated2}/interpolateColor.js +11 -11
  249. package/lib/{src/reanimated2 → reanimated2}/interpolation.js +1 -1
  250. package/lib/{src/reanimated2 → reanimated2}/jestUtils.js +9 -4
  251. package/lib/{src/reanimated2 → reanimated2}/js-reanimated/JSReanimated.js +23 -2
  252. package/lib/{src/reanimated2 → reanimated2}/js-reanimated/Mapper.js +0 -0
  253. package/lib/{src/reanimated2 → reanimated2}/js-reanimated/MapperRegistry.js +0 -0
  254. package/lib/{src/reanimated2 → reanimated2}/js-reanimated/MutableValue.js +0 -0
  255. package/lib/{src/reanimated2 → reanimated2}/js-reanimated/commonTypes.js +0 -0
  256. package/lib/{src/reanimated2 → reanimated2}/js-reanimated/index.js +3 -3
  257. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/LayoutAnimationRepository.js +0 -0
  258. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +0 -0
  259. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +8 -0
  260. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/Keyframe.js +2 -1
  261. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/commonTypes.js +0 -0
  262. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/index.js +0 -0
  263. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Bounce.js +32 -42
  264. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Default.js +0 -0
  265. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Fade.js +20 -38
  266. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Flip.js +32 -44
  267. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Lightspeed.js +8 -16
  268. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Pinwheel.js +6 -10
  269. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Roll.js +8 -12
  270. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Rotate.js +20 -36
  271. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Slide.js +16 -20
  272. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Stretch.js +8 -12
  273. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Zoom.js +32 -48
  274. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/index.js +0 -0
  275. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/CurvedTransition.js +0 -0
  276. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/EntryExitTransition.js +22 -18
  277. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/FadingTransition.js +0 -0
  278. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/JumpingTransition.js +0 -0
  279. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/LinearTransition.js +0 -0
  280. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/SequencedTransition.js +0 -0
  281. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/index.js +0 -0
  282. package/lib/{src/reanimated2 → reanimated2}/layoutReanimation/index.js +0 -0
  283. package/lib/{src/reanimated2 → reanimated2}/mock.js +3 -2
  284. package/lib/{src/reanimated2 → reanimated2}/platform-specific/RNRenderer.js +0 -0
  285. package/lib/{src/reanimated2 → reanimated2}/platform-specific/RNRenderer.web.js +0 -0
  286. package/lib/{src/reanimated2 → reanimated2}/utils.js +0 -0
  287. package/lib/{src/setAndForwardRef.js → setAndForwardRef.js} +0 -0
  288. package/lib/types/lib/ConfigHelper.d.ts +12 -0
  289. package/lib/types/lib/ReanimatedEventEmitter.d.ts +3 -0
  290. package/lib/types/lib/ReanimatedModule.d.ts +2 -0
  291. package/lib/types/lib/ReanimatedModule.macos.d.ts +2 -0
  292. package/lib/types/lib/ReanimatedModule.native.d.ts +2 -0
  293. package/lib/types/lib/ReanimatedModule.windows.d.ts +2 -0
  294. package/lib/types/lib/ReanimatedModuleCompat.d.ts +14 -0
  295. package/lib/types/lib/createAnimatedComponent.d.ts +33 -0
  296. package/lib/types/lib/reanimated2/Bezier.d.ts +6 -0
  297. package/lib/types/lib/reanimated2/Colors.d.ts +31 -0
  298. package/lib/types/lib/reanimated2/Easing.d.ts +172 -0
  299. package/lib/types/lib/reanimated2/NativeMethods.d.ts +14 -0
  300. package/lib/types/lib/reanimated2/NativeReanimated/NativeReanimated.d.ts +20 -0
  301. package/lib/types/lib/reanimated2/NativeReanimated/index.d.ts +3 -0
  302. package/lib/types/lib/reanimated2/PlatformChecker.d.ts +5 -0
  303. package/lib/types/lib/reanimated2/PropAdapters.d.ts +4 -0
  304. package/lib/types/lib/reanimated2/UpdateProps.d.ts +9 -0
  305. package/lib/types/lib/reanimated2/ViewDescriptorsSet.d.ts +20 -0
  306. package/lib/types/lib/reanimated2/WorkletEventHandler.d.ts +13 -0
  307. package/lib/types/lib/reanimated2/__mocks__/MutableValue.d.ts +5 -0
  308. package/lib/types/lib/reanimated2/__mocks__/NativeReanimated.d.ts +13 -0
  309. package/lib/types/lib/reanimated2/__mocks__/NativeReanimated.native.d.ts +13 -0
  310. package/lib/types/lib/reanimated2/animation/commonTypes.d.ts +27 -0
  311. package/lib/types/lib/reanimated2/animation/decay.d.ts +19 -0
  312. package/lib/types/lib/reanimated2/animation/delay.d.ts +7 -0
  313. package/lib/types/lib/reanimated2/animation/index.d.ts +9 -0
  314. package/lib/types/lib/reanimated2/animation/repeat.d.ts +12 -0
  315. package/lib/types/lib/reanimated2/animation/sequence.d.ts +7 -0
  316. package/lib/types/lib/reanimated2/animation/spring.d.ts +22 -0
  317. package/lib/types/lib/reanimated2/animation/styleAnimation.d.ts +7 -0
  318. package/lib/types/lib/reanimated2/animation/timing.d.ts +21 -0
  319. package/lib/types/lib/reanimated2/animation/util.d.ts +9 -0
  320. package/lib/types/lib/reanimated2/commonTypes.d.ts +80 -0
  321. package/lib/types/lib/reanimated2/component/FlatList.d.ts +9 -0
  322. package/lib/types/lib/reanimated2/component/WrappedComponents.d.ts +8 -0
  323. package/lib/types/lib/reanimated2/component/index.d.ts +9 -0
  324. package/lib/types/lib/reanimated2/core.d.ts +24 -0
  325. package/lib/types/lib/reanimated2/hook/Hooks.d.ts +5 -0
  326. package/lib/types/lib/reanimated2/hook/commonTypes.d.ts +14 -0
  327. package/lib/types/lib/reanimated2/hook/index.d.ts +10 -0
  328. package/lib/types/lib/reanimated2/hook/useAnimatedGestureHandler.d.ts +35 -0
  329. package/lib/types/lib/reanimated2/hook/useAnimatedReaction.d.ts +12 -0
  330. package/lib/types/lib/reanimated2/hook/useAnimatedRef.d.ts +3 -0
  331. package/lib/types/lib/reanimated2/hook/useAnimatedScrollHandler.d.ts +21 -0
  332. package/lib/types/lib/reanimated2/hook/useAnimatedSensor.d.ts +20 -0
  333. package/lib/types/lib/reanimated2/hook/useAnimatedStyle.d.ts +11 -0
  334. package/lib/types/lib/reanimated2/hook/useDerivedValue.d.ts +4 -0
  335. package/lib/types/lib/reanimated2/hook/useSharedValue.d.ts +2 -0
  336. package/lib/types/lib/reanimated2/hook/utils.d.ts +28 -0
  337. package/lib/types/lib/reanimated2/index.d.ts +12 -0
  338. package/lib/types/lib/reanimated2/interpolateColor.d.ts +26 -0
  339. package/lib/types/lib/reanimated2/interpolation.d.ts +14 -0
  340. package/lib/types/lib/reanimated2/jestUtils.d.ts +12 -0
  341. package/lib/types/lib/reanimated2/js-reanimated/JSReanimated.d.ts +30 -0
  342. package/lib/types/lib/reanimated2/js-reanimated/Mapper.d.ts +14 -0
  343. package/lib/types/lib/reanimated2/js-reanimated/MapperRegistry.d.ts +14 -0
  344. package/lib/types/lib/reanimated2/js-reanimated/MutableValue.d.ts +14 -0
  345. package/lib/types/lib/reanimated2/js-reanimated/commonTypes.d.ts +44 -0
  346. package/lib/types/lib/reanimated2/js-reanimated/index.d.ts +15 -0
  347. package/lib/types/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.d.ts +1 -0
  348. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.d.ts +22 -0
  349. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.d.ts +38 -0
  350. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.d.ts +25 -0
  351. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/commonTypes.d.ts +77 -0
  352. package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/index.d.ts +4 -0
  353. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.d.ts +62 -0
  354. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Default.d.ts +4 -0
  355. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.d.ts +42 -0
  356. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.d.ts +50 -0
  357. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.d.ts +18 -0
  358. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.d.ts +10 -0
  359. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.d.ts +18 -0
  360. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.d.ts +34 -0
  361. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.d.ts +34 -0
  362. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.d.ts +18 -0
  363. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.d.ts +66 -0
  364. package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/index.d.ts +10 -0
  365. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.d.ts +19 -0
  366. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.d.ts +13 -0
  367. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.d.ts +6 -0
  368. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.d.ts +6 -0
  369. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.d.ts +7 -0
  370. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.d.ts +9 -0
  371. package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/index.d.ts +6 -0
  372. package/lib/types/lib/reanimated2/layoutReanimation/index.d.ts +4 -0
  373. package/lib/types/lib/reanimated2/mock.d.ts +55 -0
  374. package/lib/types/lib/reanimated2/platform-specific/RNRenderer.d.ts +1 -0
  375. package/lib/types/lib/reanimated2/platform-specific/RNRenderer.web.d.ts +0 -0
  376. package/lib/types/lib/reanimated2/utils.d.ts +7 -0
  377. package/lib/types/lib/setAndForwardRef.d.ts +40 -0
  378. package/lib/types/react-native-reanimated-tests.d.ts +1 -0
  379. package/mock.js +5 -4
  380. package/package.json +44 -38
  381. package/plugin.js +3 -0
  382. package/react-native-reanimated.d.ts +64 -34
  383. package/src/ConfigHelper.ts +4 -4
  384. package/src/createAnimatedComponent.tsx +4 -4
  385. package/src/reanimated1/core/AnimatedFunction.js +1 -1
  386. package/src/reanimated1/derived/interpolate.js +2 -4
  387. package/src/reanimated2/Colors.ts +2 -1
  388. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +42 -15
  389. package/src/reanimated2/NativeReanimated/index.ts +0 -6
  390. package/src/reanimated2/ViewDescriptorsSet.ts +2 -3
  391. package/src/reanimated2/animation/index.ts +1 -0
  392. package/src/reanimated2/animation/styleAnimation.ts +10 -7
  393. package/src/reanimated2/animation/timing.ts +3 -1
  394. package/src/reanimated2/animation/util.ts +10 -11
  395. package/src/reanimated2/commonTypes.ts +20 -0
  396. package/src/reanimated2/component/FlatList.tsx +3 -2
  397. package/src/reanimated2/core.ts +34 -26
  398. package/src/reanimated2/globals.d.ts +6 -0
  399. package/src/reanimated2/hook/index.ts +1 -0
  400. package/src/reanimated2/hook/useAnimatedSensor.ts +91 -0
  401. package/src/reanimated2/hook/utils.ts +2 -1
  402. package/src/reanimated2/interpolateColor.ts +11 -11
  403. package/src/reanimated2/interpolation.ts +2 -6
  404. package/src/reanimated2/jestUtils.ts +20 -4
  405. package/src/reanimated2/js-reanimated/JSReanimated.ts +25 -2
  406. package/src/reanimated2/js-reanimated/index.ts +3 -3
  407. package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +13 -0
  408. package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +2 -3
  409. package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +51 -21
  410. package/src/reanimated2/layoutReanimation/defaultAnimations/Fade.ts +40 -10
  411. package/src/reanimated2/layoutReanimation/defaultAnimations/Flip.ts +48 -12
  412. package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +16 -4
  413. package/src/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.ts +8 -2
  414. package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +16 -4
  415. package/src/reanimated2/layoutReanimation/defaultAnimations/Rotate.ts +32 -8
  416. package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +32 -10
  417. package/src/reanimated2/layoutReanimation/defaultAnimations/Stretch.ts +16 -4
  418. package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +64 -16
  419. package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +2 -1
  420. package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +26 -19
  421. package/src/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.ts +2 -1
  422. package/src/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.ts +2 -1
  423. package/src/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.ts +2 -1
  424. package/src/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.ts +2 -1
  425. package/src/reanimated2/mock.ts +3 -2
  426. package/android/expo/linking.gradle +0 -46
  427. package/android/expo/src/main/java/com/swmansion/reanimated/EXReanimatedAdapter.java +0 -12
  428. package/android/expo/src/main/java/expo/modules/adapters/reanimated/EXReanimatedPackage.java +0 -26
  429. package/android/react-native-reanimated-63-hermes.aar +0 -0
  430. package/android/react-native-reanimated-63-jsc.aar +0 -0
  431. package/android/src/main/java/com/swmansion/reanimated/ReanimatedProxyPackage.java +0 -15
  432. package/expo-module.config.json +0 -3
  433. package/lib/src/reanimated2/NativeReanimated/NativeReanimated.js +0 -37
  434. package/libSo/fbjni/jni/arm64-v8a/libfbjni.so +0 -0
  435. package/libSo/fbjni/jni/armeabi-v7a/libfbjni.so +0 -0
  436. package/libSo/fbjni/jni/x86/libfbjni.so +0 -0
  437. package/libSo/fbjni/jni/x86_64/libfbjni.so +0 -0
@@ -0,0 +1,27 @@
1
+ #include "AndroidLogger.h"
2
+ #include <android/log.h>
3
+ #include "Logger.h"
4
+ #define APPNAME "NATIVE_REANIMATED"
5
+
6
+ namespace reanimated {
7
+
8
+ std::unique_ptr<LoggerInterface> Logger::instance =
9
+ std::make_unique<AndroidLogger>();
10
+
11
+ void AndroidLogger::log(const char *str) {
12
+ __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "%s", str);
13
+ }
14
+
15
+ void AndroidLogger::log(double d) {
16
+ __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "%f", d);
17
+ }
18
+
19
+ void AndroidLogger::log(int i) {
20
+ __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "%d", i);
21
+ }
22
+
23
+ void AndroidLogger::log(bool b) {
24
+ __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "%s", b ? "true" : "false");
25
+ }
26
+
27
+ } // namespace reanimated
@@ -0,0 +1,59 @@
1
+ #include "AndroidScheduler.h"
2
+ #include <android/log.h>
3
+ #include <fbjni/fbjni.h>
4
+ #include <jsi/jsi.h>
5
+ #include <memory>
6
+ #include <string>
7
+
8
+ namespace reanimated {
9
+
10
+ using namespace facebook;
11
+ using namespace react;
12
+
13
+ class SchedulerWrapper : public Scheduler {
14
+ private:
15
+ jni::global_ref<AndroidScheduler::javaobject> scheduler_;
16
+
17
+ public:
18
+ explicit SchedulerWrapper(
19
+ jni::global_ref<AndroidScheduler::javaobject> scheduler)
20
+ : scheduler_(scheduler) {}
21
+
22
+ void scheduleOnUI(std::function<void()> job) override {
23
+ Scheduler::scheduleOnUI(job);
24
+ if (!scheduledOnUI) {
25
+ scheduledOnUI = true;
26
+ scheduler_->cthis()->scheduleOnUI();
27
+ }
28
+ }
29
+
30
+ ~SchedulerWrapper() {}
31
+ };
32
+
33
+ AndroidScheduler::AndroidScheduler(
34
+ jni::alias_ref<AndroidScheduler::javaobject> jThis)
35
+ : javaPart_(jni::make_global(jThis)),
36
+ scheduler_(new SchedulerWrapper(jni::make_global(jThis))) {}
37
+
38
+ jni::local_ref<AndroidScheduler::jhybriddata> AndroidScheduler::initHybrid(
39
+ jni::alias_ref<jhybridobject> jThis) {
40
+ return makeCxxInstance(jThis);
41
+ }
42
+
43
+ void AndroidScheduler::triggerUI() {
44
+ scheduler_->triggerUI();
45
+ }
46
+
47
+ void AndroidScheduler::scheduleOnUI() {
48
+ static auto method = javaPart_->getClass()->getMethod<void()>("scheduleOnUI");
49
+ method(javaPart_.get());
50
+ }
51
+
52
+ void AndroidScheduler::registerNatives() {
53
+ registerHybrid({
54
+ makeNativeMethod("initHybrid", AndroidScheduler::initHybrid),
55
+ makeNativeMethod("triggerUI", AndroidScheduler::triggerUI),
56
+ });
57
+ }
58
+
59
+ } // namespace reanimated
@@ -0,0 +1,59 @@
1
+ #include "JNIHelper.h"
2
+
3
+ namespace reanimated {
4
+
5
+ using namespace facebook::jni;
6
+ using namespace facebook;
7
+ using namespace react;
8
+
9
+ local_ref<JNIHelper::PropsMap> JNIHelper::PropsMap::create() {
10
+ return newInstance();
11
+ }
12
+
13
+ void JNIHelper::PropsMap::put(
14
+ const std::string &key,
15
+ jni::local_ref<JObject> object) {
16
+ static auto method =
17
+ getClass()
18
+ ->getMethod<jobject(
19
+ jni::local_ref<JObject>, jni::local_ref<JObject>)>("put");
20
+ method(self(), jni::make_jstring(key), object);
21
+ }
22
+
23
+ jni::local_ref<JNIHelper::PropsMap> JNIHelper::ConvertToPropsMap(
24
+ jsi::Runtime &rt,
25
+ const jsi::Object &props) {
26
+ auto map = PropsMap::create();
27
+
28
+ auto propNames = props.getPropertyNames(rt);
29
+ for (size_t i = 0, size = propNames.size(rt); i < size; i++) {
30
+ auto jsiKey = propNames.getValueAtIndex(rt, i).asString(rt);
31
+ auto value = props.getProperty(rt, jsiKey);
32
+ auto key = jsiKey.utf8(rt);
33
+ if (value.isUndefined() || value.isNull()) {
34
+ map->put(key, nullptr);
35
+ } else if (value.isBool()) {
36
+ map->put(key, JBoolean::valueOf(value.getBool()));
37
+ } else if (value.isNumber()) {
38
+ map->put(key, jni::autobox(value.asNumber()));
39
+ } else if (value.isString()) {
40
+ map->put(key, jni::make_jstring(value.asString(rt).utf8(rt)));
41
+ } else if (value.isObject()) {
42
+ if (value.asObject(rt).isArray(rt)) {
43
+ map->put(
44
+ key,
45
+ ReadableNativeArray::newObjectCxxArgs(
46
+ jsi::dynamicFromValue(rt, value)));
47
+ } else {
48
+ map->put(
49
+ key,
50
+ ReadableNativeMap::newObjectCxxArgs(
51
+ jsi::dynamicFromValue(rt, value)));
52
+ }
53
+ }
54
+ }
55
+
56
+ return map;
57
+ }
58
+
59
+ }; // namespace reanimated
@@ -0,0 +1,103 @@
1
+ #include "LayoutAnimations.h"
2
+ #include "FeaturesConfig.h"
3
+ #include "Logger.h"
4
+
5
+ namespace reanimated {
6
+
7
+ LayoutAnimations::LayoutAnimations(
8
+ jni::alias_ref<LayoutAnimations::javaobject> jThis)
9
+ : javaPart_(jni::make_global(jThis)) {}
10
+
11
+ jni::local_ref<LayoutAnimations::jhybriddata> LayoutAnimations::initHybrid(
12
+ jni::alias_ref<jhybridobject> jThis) {
13
+ return makeCxxInstance(jThis);
14
+ }
15
+
16
+ void LayoutAnimations::setWeakUIRuntime(std::weak_ptr<jsi::Runtime> wrt) {
17
+ this->weakUIRuntime = wrt;
18
+ }
19
+
20
+ void LayoutAnimations::startAnimationForTag(
21
+ int tag,
22
+ alias_ref<JString> type,
23
+ alias_ref<JMap<jstring, jstring>> values) {
24
+ if (auto rt = this->weakUIRuntime.lock()) {
25
+ jsi::Value layoutAnimationRepositoryAsValue =
26
+ rt->global()
27
+ .getPropertyAsObject(*rt, "global")
28
+ .getProperty(*rt, "LayoutAnimationRepository");
29
+ if (!layoutAnimationRepositoryAsValue.isUndefined()) {
30
+ jsi::Function startAnimationForTag =
31
+ layoutAnimationRepositoryAsValue.getObject(*rt).getPropertyAsFunction(
32
+ *rt, "startAnimationForTag");
33
+ jsi::Object target(*rt);
34
+
35
+ for (const auto &entry : *values) {
36
+ target.setProperty(
37
+ *rt,
38
+ entry.first->toStdString().c_str(),
39
+ std::stof(entry.second->toStdString()));
40
+ }
41
+ startAnimationForTag.call(
42
+ *rt,
43
+ jsi::Value(tag),
44
+ jsi::String::createFromUtf8(*rt, type->toStdString()),
45
+ target);
46
+ }
47
+ }
48
+ }
49
+
50
+ void LayoutAnimations::removeConfigForTag(int tag) {
51
+ if (auto rt = this->weakUIRuntime.lock()) {
52
+ jsi::Value layoutAnimationRepositoryAsValue =
53
+ rt->global()
54
+ .getPropertyAsObject(*rt, "global")
55
+ .getProperty(*rt, "LayoutAnimationRepository");
56
+ if (!layoutAnimationRepositoryAsValue.isUndefined()) {
57
+ jsi::Function removeConfig =
58
+ layoutAnimationRepositoryAsValue.getObject(*rt).getPropertyAsFunction(
59
+ *rt, "removeConfig");
60
+ removeConfig.call(*rt, jsi::Value(tag));
61
+ }
62
+ }
63
+ }
64
+
65
+ void LayoutAnimations::notifyAboutProgress(
66
+ const jsi::Value &progress,
67
+ int tag) {
68
+ if (auto rt = this->weakUIRuntime.lock()) {
69
+ static const auto method =
70
+ javaPart_->getClass()
71
+ ->getMethod<void(JMap<JString, JObject>::javaobject, int)>(
72
+ "notifyAboutProgress");
73
+ method(
74
+ javaPart_.get(),
75
+ JNIHelper::ConvertToPropsMap(*rt, progress.asObject(*rt)).get(),
76
+ tag);
77
+ }
78
+ }
79
+
80
+ void LayoutAnimations::notifyAboutEnd(int tag, int cancelled) {
81
+ static const auto method =
82
+ javaPart_->getClass()->getMethod<void(int, int)>("notifyAboutEnd");
83
+ method(javaPart_.get(), tag, cancelled);
84
+ }
85
+
86
+ bool LayoutAnimations::isLayoutAnimationEnabled() {
87
+ return FeaturesConfig::isLayoutAnimationEnabled();
88
+ }
89
+
90
+ void LayoutAnimations::registerNatives() {
91
+ registerHybrid({
92
+ makeNativeMethod("initHybrid", LayoutAnimations::initHybrid),
93
+ makeNativeMethod(
94
+ "startAnimationForTag", LayoutAnimations::startAnimationForTag),
95
+ makeNativeMethod(
96
+ "removeConfigForTag", LayoutAnimations::removeConfigForTag),
97
+ makeNativeMethod(
98
+ "isLayoutAnimationEnabled",
99
+ LayoutAnimations::isLayoutAnimationEnabled),
100
+ });
101
+ }
102
+
103
+ }; // namespace reanimated
@@ -0,0 +1,327 @@
1
+ #include <fbjni/fbjni.h>
2
+ #include <jsi/JSIDynamic.h>
3
+ #include <jsi/jsi.h>
4
+ #include <react/jni/ReadableNativeArray.h>
5
+ #include <react/jni/ReadableNativeMap.h>
6
+
7
+ #include <memory>
8
+ #include <string>
9
+
10
+ #if FOR_HERMES
11
+ #include <hermes/hermes.h>
12
+ #else
13
+ #include <jsi/JSCRuntime.h>
14
+ #endif
15
+
16
+ #include <android/log.h>
17
+ #include "AndroidErrorHandler.h"
18
+ #include "AndroidScheduler.h"
19
+ #include "LayoutAnimationsProxy.h"
20
+ #include "NativeProxy.h"
21
+ #include "PlatformDepMethodsHolder.h"
22
+
23
+ namespace reanimated {
24
+
25
+ using namespace facebook;
26
+ using namespace react;
27
+
28
+ NativeProxy::NativeProxy(
29
+ jni::alias_ref<NativeProxy::javaobject> jThis,
30
+ jsi::Runtime *rt,
31
+ std::shared_ptr<facebook::react::CallInvoker> jsCallInvoker,
32
+ std::shared_ptr<Scheduler> scheduler,
33
+ jni::global_ref<LayoutAnimations::javaobject> _layoutAnimations)
34
+ : javaPart_(jni::make_global(jThis)),
35
+ runtime_(rt),
36
+ jsCallInvoker_(jsCallInvoker),
37
+ scheduler_(scheduler),
38
+ layoutAnimations(std::move(_layoutAnimations)) {}
39
+
40
+ jni::local_ref<NativeProxy::jhybriddata> NativeProxy::initHybrid(
41
+ jni::alias_ref<jhybridobject> jThis,
42
+ jlong jsContext,
43
+ jni::alias_ref<facebook::react::CallInvokerHolder::javaobject>
44
+ jsCallInvokerHolder,
45
+ jni::alias_ref<AndroidScheduler::javaobject> androidScheduler,
46
+ jni::alias_ref<LayoutAnimations::javaobject> layoutAnimations) {
47
+ auto jsCallInvoker = jsCallInvokerHolder->cthis()->getCallInvoker();
48
+ auto scheduler = androidScheduler->cthis()->getScheduler();
49
+ scheduler->setJSCallInvoker(jsCallInvoker);
50
+ return makeCxxInstance(
51
+ jThis,
52
+ (jsi::Runtime *)jsContext,
53
+ jsCallInvoker,
54
+ scheduler,
55
+ make_global(layoutAnimations));
56
+ }
57
+
58
+ void NativeProxy::installJSIBindings() {
59
+ auto propUpdater = [this](
60
+ jsi::Runtime &rt,
61
+ int viewTag,
62
+ const jsi::Value &viewName,
63
+ const jsi::Object &props) {
64
+ // viewName is for iOS only, we skip it here
65
+ this->updateProps(rt, viewTag, props);
66
+ };
67
+
68
+ auto getCurrentTime = [this]() {
69
+ auto method =
70
+ javaPart_->getClass()->getMethod<local_ref<JString>()>("getUptime");
71
+ local_ref<JString> output = method(javaPart_.get());
72
+ return static_cast<double>(
73
+ std::strtoll(output->toStdString().c_str(), NULL, 10));
74
+ };
75
+
76
+ auto requestRender = [this, getCurrentTime](
77
+ std::function<void(double)> onRender,
78
+ jsi::Runtime &rt) {
79
+ // doNoUse -> NodesManager passes here a timestamp from choreographer which
80
+ // is useless for us as we use diffrent timer to better handle events. The
81
+ // lambda is translated to NodeManager.OnAnimationFrame and treated just
82
+ // like reanimated 1 frame callbacks which make use of the timestamp.
83
+ auto wrappedOnRender = [getCurrentTime, &rt, onRender](double doNotUse) {
84
+ jsi::Object global = rt.global();
85
+ jsi::String frameTimestampName =
86
+ jsi::String::createFromAscii(rt, "_frameTimestamp");
87
+ double frameTimestamp = getCurrentTime();
88
+ global.setProperty(rt, frameTimestampName, frameTimestamp);
89
+ onRender(frameTimestamp);
90
+ global.setProperty(rt, frameTimestampName, jsi::Value::undefined());
91
+ };
92
+ this->requestRender(std::move(wrappedOnRender));
93
+ };
94
+
95
+ auto propObtainer = [this](
96
+ jsi::Runtime &rt,
97
+ const int viewTag,
98
+ const jsi::String &propName) -> jsi::Value {
99
+ auto method =
100
+ javaPart_->getClass()
101
+ ->getMethod<jni::local_ref<JString>(int, jni::local_ref<JString>)>(
102
+ "obtainProp");
103
+ local_ref<JString> propNameJStr =
104
+ jni::make_jstring(propName.utf8(rt).c_str());
105
+ auto result = method(javaPart_.get(), viewTag, propNameJStr);
106
+ std::string str = result->toStdString();
107
+ return jsi::Value(rt, jsi::String::createFromAscii(rt, str.c_str()));
108
+ };
109
+
110
+ auto measuringFunction =
111
+ [this](int viewTag) -> std::vector<std::pair<std::string, double>> {
112
+ return measure(viewTag);
113
+ };
114
+
115
+ auto scrollToFunction =
116
+ [this](int viewTag, double x, double y, bool animated) -> void {
117
+ scrollTo(viewTag, x, y, animated);
118
+ };
119
+
120
+ auto registerSensorFunction =
121
+ [this](int sensorType, int interval, std::function<void(double[])> setter)
122
+ -> int {
123
+ return this->registerSensor(sensorType, interval, std::move(setter));
124
+ };
125
+ auto unregisterSensorFunction = [this](int sensorId) {
126
+ unregisterSensor(sensorId);
127
+ };
128
+
129
+ auto setGestureStateFunction = [this](int handlerTag, int newState) -> void {
130
+ setGestureState(handlerTag, newState);
131
+ };
132
+ #if FOR_HERMES
133
+ auto config =
134
+ ::hermes::vm::RuntimeConfig::Builder().withEnableSampleProfiling(false);
135
+ std::shared_ptr<jsi::Runtime> animatedRuntime =
136
+ facebook::hermes::makeHermesRuntime(config.build());
137
+ #else
138
+ std::shared_ptr<jsi::Runtime> animatedRuntime =
139
+ facebook::jsc::makeJSCRuntime();
140
+ #endif
141
+ runtime_->global().setProperty(
142
+ *runtime_,
143
+ "_WORKLET_RUNTIME",
144
+ static_cast<double>(
145
+ reinterpret_cast<std::uintptr_t>(animatedRuntime.get())));
146
+
147
+ std::shared_ptr<ErrorHandler> errorHandler =
148
+ std::make_shared<AndroidErrorHandler>(scheduler_);
149
+
150
+ // Layout Animations Start
151
+
152
+ auto notifyAboutProgress = [=](int tag, jsi::Value progress) {
153
+ this->layoutAnimations->cthis()->notifyAboutProgress(progress, tag);
154
+ };
155
+
156
+ auto notifyAboutEnd = [=](int tag, bool isCancelled) {
157
+ this->layoutAnimations->cthis()->notifyAboutEnd(tag, (isCancelled) ? 1 : 0);
158
+ };
159
+
160
+ auto configurePropsFunction = [=](jsi::Runtime &rt,
161
+ const jsi::Value &uiProps,
162
+ const jsi::Value &nativeProps) {
163
+ this->configureProps(rt, uiProps, nativeProps);
164
+ };
165
+
166
+ std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy =
167
+ std::make_shared<LayoutAnimationsProxy>(
168
+ notifyAboutProgress, notifyAboutEnd);
169
+ std::weak_ptr<jsi::Runtime> wrt = animatedRuntime;
170
+ layoutAnimations->cthis()->setWeakUIRuntime(wrt);
171
+
172
+ // Layout Animations End
173
+
174
+ PlatformDepMethodsHolder platformDepMethodsHolder = {
175
+ requestRender,
176
+ propUpdater,
177
+ scrollToFunction,
178
+ measuringFunction,
179
+ getCurrentTime,
180
+ registerSensorFunction,
181
+ unregisterSensorFunction,
182
+ setGestureStateFunction,
183
+ configurePropsFunction};
184
+
185
+ auto module = std::make_shared<NativeReanimatedModule>(
186
+ jsCallInvoker_,
187
+ scheduler_,
188
+ animatedRuntime,
189
+ errorHandler,
190
+ propObtainer,
191
+ layoutAnimationsProxy,
192
+ platformDepMethodsHolder);
193
+
194
+ _nativeReanimatedModule = module;
195
+
196
+ this->registerEventHandler([module, getCurrentTime](
197
+ std::string eventName,
198
+ std::string eventAsString) {
199
+ jsi::Object global = module->runtime->global();
200
+ jsi::String eventTimestampName =
201
+ jsi::String::createFromAscii(*module->runtime, "_eventTimestamp");
202
+ global.setProperty(*module->runtime, eventTimestampName, getCurrentTime());
203
+ module->onEvent(eventName, eventAsString);
204
+ global.setProperty(
205
+ *module->runtime, eventTimestampName, jsi::Value::undefined());
206
+ });
207
+
208
+ runtime_->global().setProperty(
209
+ *runtime_,
210
+ jsi::PropNameID::forAscii(*runtime_, "__reanimatedModuleProxy"),
211
+ jsi::Object::createFromHostObject(*runtime_, module));
212
+ }
213
+
214
+ bool NativeProxy::isAnyHandlerWaitingForEvent(std::string s) {
215
+ return _nativeReanimatedModule->isAnyHandlerWaitingForEvent(s);
216
+ }
217
+
218
+ void NativeProxy::registerNatives() {
219
+ registerHybrid(
220
+ {makeNativeMethod("initHybrid", NativeProxy::initHybrid),
221
+ makeNativeMethod("installJSIBindings", NativeProxy::installJSIBindings),
222
+ makeNativeMethod(
223
+ "isAnyHandlerWaitingForEvent",
224
+ NativeProxy::isAnyHandlerWaitingForEvent)});
225
+ }
226
+
227
+ void NativeProxy::requestRender(std::function<void(double)> onRender) {
228
+ static auto method =
229
+ javaPart_->getClass()
230
+ ->getMethod<void(AnimationFrameCallback::javaobject)>(
231
+ "requestRender");
232
+ method(
233
+ javaPart_.get(),
234
+ AnimationFrameCallback::newObjectCxxArgs(std::move(onRender)).get());
235
+ }
236
+
237
+ void NativeProxy::registerEventHandler(
238
+ std::function<void(std::string, std::string)> handler) {
239
+ static auto method =
240
+ javaPart_->getClass()->getMethod<void(EventHandler::javaobject)>(
241
+ "registerEventHandler");
242
+ method(
243
+ javaPart_.get(),
244
+ EventHandler::newObjectCxxArgs(std::move(handler)).get());
245
+ }
246
+
247
+ void NativeProxy::updateProps(
248
+ jsi::Runtime &rt,
249
+ int viewTag,
250
+ const jsi::Object &props) {
251
+ auto method = javaPart_->getClass()
252
+ ->getMethod<void(int, JMap<JString, JObject>::javaobject)>(
253
+ "updateProps");
254
+ method(
255
+ javaPart_.get(), viewTag, JNIHelper::ConvertToPropsMap(rt, props).get());
256
+ }
257
+
258
+ void NativeProxy::scrollTo(int viewTag, double x, double y, bool animated) {
259
+ auto method =
260
+ javaPart_->getClass()->getMethod<void(int, double, double, bool)>(
261
+ "scrollTo");
262
+ method(javaPart_.get(), viewTag, x, y, animated);
263
+ }
264
+
265
+ std::vector<std::pair<std::string, double>> NativeProxy::measure(int viewTag) {
266
+ auto method =
267
+ javaPart_->getClass()->getMethod<local_ref<JArrayFloat>(int)>("measure");
268
+ local_ref<JArrayFloat> output = method(javaPart_.get(), viewTag);
269
+ size_t size = output->size();
270
+ auto elements = output->getRegion(0, size);
271
+ std::vector<std::pair<std::string, double>> result;
272
+
273
+ result.push_back({"x", elements[0]});
274
+ result.push_back({"y", elements[1]});
275
+
276
+ result.push_back({"pageX", elements[2]});
277
+ result.push_back({"pageY", elements[3]});
278
+
279
+ result.push_back({"width", elements[4]});
280
+ result.push_back({"height", elements[5]});
281
+
282
+ return result;
283
+ }
284
+
285
+ int NativeProxy::registerSensor(
286
+ int sensorType,
287
+ int interval,
288
+ std::function<void(double[])> setter) {
289
+ static auto method =
290
+ javaPart_->getClass()->getMethod<int(int, int, SensorSetter::javaobject)>(
291
+ "registerSensor");
292
+ return method(
293
+ javaPart_.get(),
294
+ sensorType,
295
+ interval,
296
+ SensorSetter::newObjectCxxArgs(std::move(setter)).get());
297
+ }
298
+ void NativeProxy::unregisterSensor(int sensorId) {
299
+ auto method = javaPart_->getClass()->getMethod<void(int)>("unregisterSensor");
300
+ method(javaPart_.get(), sensorId);
301
+ }
302
+
303
+ void NativeProxy::setGestureState(int handlerTag, int newState) {
304
+ auto method =
305
+ javaPart_->getClass()->getMethod<void(int, int)>("setGestureState");
306
+ method(javaPart_.get(), handlerTag, newState);
307
+ }
308
+
309
+ void NativeProxy::configureProps(
310
+ jsi::Runtime &rt,
311
+ const jsi::Value &uiProps,
312
+ const jsi::Value &nativeProps) {
313
+ auto method = javaPart_->getClass()
314
+ ->getMethod<void(
315
+ ReadableNativeArray::javaobject,
316
+ ReadableNativeArray::javaobject)>("configureProps");
317
+ method(
318
+ javaPart_.get(),
319
+ ReadableNativeArray::newObjectCxxArgs(
320
+ std::move(jsi::dynamicFromValue(rt, uiProps)))
321
+ .get(),
322
+ ReadableNativeArray::newObjectCxxArgs(
323
+ std::move(jsi::dynamicFromValue(rt, nativeProps)))
324
+ .get());
325
+ }
326
+
327
+ } // namespace reanimated
@@ -0,0 +1,17 @@
1
+ #include <fbjni/fbjni.h>
2
+
3
+ #include "AndroidScheduler.h"
4
+ #include "LayoutAnimations.h"
5
+ #include "Logger.h"
6
+ #include "NativeProxy.h"
7
+
8
+ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
9
+ return facebook::jni::initialize(vm, [] {
10
+ reanimated::NativeProxy::registerNatives();
11
+ reanimated::AnimationFrameCallback::registerNatives();
12
+ reanimated::EventHandler::registerNatives();
13
+ reanimated::AndroidScheduler::registerNatives();
14
+ reanimated::LayoutAnimations::registerNatives();
15
+ reanimated::SensorSetter::registerNatives();
16
+ });
17
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #include "TurboModule.h"
9
+
10
+ using namespace facebook;
11
+
12
+ namespace facebook {
13
+ namespace react {
14
+
15
+ TurboModule::TurboModule(
16
+ const std::string &name,
17
+ std::shared_ptr<CallInvoker> jsInvoker)
18
+ : name_(name), jsInvoker_(jsInvoker) {}
19
+
20
+ TurboModule::~TurboModule() {}
21
+
22
+ jsi::Value TurboModule::get(
23
+ jsi::Runtime &runtime,
24
+ const jsi::PropNameID &propName) {
25
+ std::string propNameUtf8 = propName.utf8(runtime);
26
+ auto p = methodMap_.find(propNameUtf8);
27
+ if (p == methodMap_.end()) {
28
+ // Method was not found, let JS decide what to do.
29
+ return jsi::Value::undefined();
30
+ }
31
+ MethodMetadata meta = p->second;
32
+ return jsi::Function::createFromHostFunction(
33
+ runtime,
34
+ propName,
35
+ meta.argCount,
36
+ [this, meta](
37
+ facebook::jsi::Runtime &rt,
38
+ const facebook::jsi::Value &thisVal,
39
+ const facebook::jsi::Value *args,
40
+ size_t count) { return meta.invoker(rt, *this, args, count); });
41
+ }
42
+
43
+ } // namespace react
44
+ } // namespace facebook
@@ -0,0 +1,30 @@
1
+ #pragma once
2
+
3
+ #include <fbjni/fbjni.h>
4
+ #include <jni.h>
5
+ #include <memory>
6
+ #include <string>
7
+ #include "AndroidScheduler.h"
8
+ #include "ErrorHandler.h"
9
+ #include "Logger.h"
10
+ #include "Scheduler.h"
11
+
12
+ namespace reanimated {
13
+
14
+ class AndroidErrorHandler : public JavaClass<AndroidErrorHandler>,
15
+ public ErrorHandler {
16
+ std::shared_ptr<ErrorWrapper> error;
17
+ std::shared_ptr<Scheduler> scheduler;
18
+ void raiseSpec() override;
19
+
20
+ public:
21
+ static auto constexpr kJavaDescriptor =
22
+ "Lcom/swmansion/reanimated/AndroidErrorHandler;";
23
+ explicit AndroidErrorHandler(std::shared_ptr<Scheduler> scheduler);
24
+ std::shared_ptr<Scheduler> getScheduler() override;
25
+ std::shared_ptr<ErrorWrapper> getError() override;
26
+ void setError(std::string message) override;
27
+ virtual ~AndroidErrorHandler() {}
28
+ };
29
+
30
+ } // namespace reanimated
@@ -0,0 +1,16 @@
1
+ #pragma once
2
+
3
+ #include "LoggerInterface.h"
4
+
5
+ namespace reanimated {
6
+
7
+ class AndroidLogger : public LoggerInterface {
8
+ public:
9
+ void log(const char *str) override;
10
+ void log(double d) override;
11
+ void log(int i) override;
12
+ void log(bool b) override;
13
+ virtual ~AndroidLogger() {}
14
+ };
15
+
16
+ } // namespace reanimated