react-native-reanimated 2.3.0-alpha.1 → 2.3.0-beta.2

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 (328) hide show
  1. package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.cpp +15 -8
  2. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +170 -166
  3. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +36 -34
  4. package/Common/cpp/Registries/EventHandlerRegistry.cpp +13 -6
  5. package/Common/cpp/Registries/MapperRegistry.cpp +19 -15
  6. package/Common/cpp/Registries/WorkletsCache.cpp +19 -9
  7. package/Common/cpp/SharedItems/FrozenObject.cpp +19 -8
  8. package/Common/cpp/SharedItems/MutableValue.cpp +38 -25
  9. package/Common/cpp/SharedItems/MutableValueSetterProxy.cpp +11 -7
  10. package/Common/cpp/SharedItems/RemoteObject.cpp +9 -5
  11. package/Common/cpp/SharedItems/ShareableValue.cpp +216 -143
  12. package/Common/cpp/Tools/JSIStoreValueUser.cpp +36 -24
  13. package/Common/cpp/Tools/Mapper.cpp +41 -29
  14. package/Common/cpp/Tools/RuntimeDecorator.cpp +103 -84
  15. package/Common/cpp/Tools/Scheduler.cpp +14 -6
  16. package/Common/cpp/Tools/WorkletEventHandler.cpp +1 -1
  17. package/Common/cpp/headers/LayoutAnimations/LayoutAnimationsProxy.h +12 -11
  18. package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +45 -34
  19. package/Common/cpp/headers/NativeModules/NativeReanimatedModuleSpec.h +28 -16
  20. package/Common/cpp/headers/Registries/EventHandlerRegistry.h +14 -8
  21. package/Common/cpp/headers/Registries/MapperRegistry.h +4 -4
  22. package/Common/cpp/headers/Registries/WorkletsCache.h +9 -7
  23. package/Common/cpp/headers/SharedItems/FrozenObject.h +15 -11
  24. package/Common/cpp/headers/SharedItems/HostFunctionHandler.h +6 -4
  25. package/Common/cpp/headers/SharedItems/MutableValue.h +21 -12
  26. package/Common/cpp/headers/SharedItems/MutableValueSetterProxy.h +10 -7
  27. package/Common/cpp/headers/SharedItems/RemoteObject.h +16 -8
  28. package/Common/cpp/headers/SharedItems/RuntimeManager.h +39 -21
  29. package/Common/cpp/headers/SharedItems/ShareableValue.h +31 -27
  30. package/Common/cpp/headers/SharedItems/SharedParent.h +7 -4
  31. package/Common/cpp/headers/SharedItems/ValueWrapper.h +80 -61
  32. package/Common/cpp/headers/SpecTools/ErrorHandler.h +17 -19
  33. package/Common/cpp/headers/Tools/JSIStoreValueUser.h +18 -13
  34. package/Common/cpp/headers/Tools/Mapper.h +24 -18
  35. package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +12 -7
  36. package/Common/cpp/headers/Tools/ReanimatedHiddenHeaders.h +7 -7
  37. package/Common/cpp/headers/Tools/RuntimeDecorator.h +29 -23
  38. package/Common/cpp/headers/Tools/Scheduler.h +28 -33
  39. package/Common/cpp/headers/Tools/WorkletEventHandler.h +9 -7
  40. package/Common/cpp/hidden_headers/Logger.h +14 -14
  41. package/Common/cpp/hidden_headers/LoggerInterface.h +8 -9
  42. package/Common/cpp/hidden_headers/SpeedChecker.h +7 -8
  43. package/README.md +1 -1
  44. package/RNReanimated.podspec +4 -4
  45. package/android/build.gradle +80 -3
  46. package/android/react-native-reanimated-63-hermes.aar +0 -0
  47. package/android/react-native-reanimated-63-jsc.aar +0 -0
  48. package/android/react-native-reanimated-64-hermes.aar +0 -0
  49. package/android/react-native-reanimated-64-jsc.aar +0 -0
  50. package/android/react-native-reanimated-65-hermes.aar +0 -0
  51. package/android/react-native-reanimated-65-jsc.aar +0 -0
  52. package/android/react-native-reanimated-66-hermes.aar +0 -0
  53. package/android/react-native-reanimated-66-jsc.aar +0 -0
  54. package/ios/LayoutReanimation/REAAnimationsManager.h +19 -10
  55. package/ios/LayoutReanimation/REAAnimationsManager.m +195 -200
  56. package/ios/LayoutReanimation/REASnapshot.h +13 -0
  57. package/ios/LayoutReanimation/REASnapshot.m +29 -0
  58. package/ios/LayoutReanimation/REAUIManager.h +16 -0
  59. package/ios/LayoutReanimation/REAUIManager.mm +348 -0
  60. package/ios/Nodes/REAAlwaysNode.m +14 -15
  61. package/ios/Nodes/REABezierNode.m +8 -7
  62. package/ios/Nodes/REABlockNode.m +1 -1
  63. package/ios/Nodes/REACallFuncNode.h +0 -1
  64. package/ios/Nodes/REACallFuncNode.m +10 -8
  65. package/ios/Nodes/REAClockNodes.m +22 -20
  66. package/ios/Nodes/REAConcatNode.h +0 -1
  67. package/ios/Nodes/REAConcatNode.m +2 -2
  68. package/ios/Nodes/REACondNode.m +7 -5
  69. package/ios/Nodes/READebugNode.m +5 -4
  70. package/ios/Nodes/REAEventNode.m +1 -1
  71. package/ios/Nodes/REAFunctionNode.h +0 -1
  72. package/ios/Nodes/REAFunctionNode.m +2 -2
  73. package/ios/Nodes/REAJSCallNode.m +4 -5
  74. package/ios/Nodes/REANode.h +3 -4
  75. package/ios/Nodes/REANode.m +9 -11
  76. package/ios/Nodes/REAOperatorNode.m +68 -67
  77. package/ios/Nodes/REAParamNode.h +1 -3
  78. package/ios/Nodes/REAParamNode.m +15 -17
  79. package/ios/Nodes/REAPropsNode.h +1 -3
  80. package/ios/Nodes/REAPropsNode.m +19 -22
  81. package/ios/Nodes/REASetNode.h +0 -1
  82. package/ios/Nodes/REASetNode.m +7 -5
  83. package/ios/Nodes/REAStyleNode.h +0 -1
  84. package/ios/Nodes/REAStyleNode.m +2 -4
  85. package/ios/Nodes/REATransformNode.h +0 -1
  86. package/ios/Nodes/REATransformNode.m +3 -5
  87. package/ios/Nodes/REAValueNode.m +5 -7
  88. package/ios/REAEventDispatcher.m +3 -3
  89. package/ios/REAModule.h +0 -2
  90. package/ios/REAModule.m +29 -40
  91. package/ios/REANodesManager.h +11 -19
  92. package/ios/REANodesManager.m +105 -130
  93. package/ios/REAUtils.h +5 -3
  94. package/ios/Transitioning/RCTConvert+REATransition.m +45 -29
  95. package/ios/Transitioning/REAAllTransitions.h +2 -2
  96. package/ios/Transitioning/REAAllTransitions.m +14 -25
  97. package/ios/Transitioning/REATransition.h +8 -7
  98. package/ios/Transitioning/REATransition.m +19 -16
  99. package/ios/Transitioning/REATransitionAnimation.h +1 -1
  100. package/ios/Transitioning/REATransitionAnimation.m +2 -3
  101. package/ios/Transitioning/REATransitionManager.m +3 -3
  102. package/ios/native/NativeMethods.h +15 -5
  103. package/ios/native/NativeProxy.h +4 -3
  104. package/ios/native/NativeProxy.mm +19 -5
  105. package/ios/native/REAIOSErrorHandler.h +13 -10
  106. package/ios/native/REAIOSLogger.h +8 -8
  107. package/ios/native/REAIOSScheduler.h +5 -5
  108. package/ios/native/REAIOSScheduler.mm +7 -5
  109. package/ios/native/REAInitializer.h +37 -0
  110. package/ios/native/REAInitializer.mm +63 -0
  111. package/ios/native/UIResponder+Reanimated.mm +9 -48
  112. package/lib/ConfigHelper.js +1 -0
  113. package/lib/ReanimatedModule.native.js +10 -2
  114. package/lib/createAnimatedComponent.js +64 -30
  115. package/lib/reanimated1/core/AnimatedAlways.js +1 -1
  116. package/lib/reanimated1/core/AnimatedBezier.js +1 -1
  117. package/lib/reanimated1/core/AnimatedBlock.js +1 -1
  118. package/lib/reanimated1/core/AnimatedCall.js +1 -1
  119. package/lib/reanimated1/core/AnimatedCallFunc.js +1 -1
  120. package/lib/reanimated1/core/AnimatedConcat.js +1 -1
  121. package/lib/reanimated1/core/AnimatedCond.js +1 -1
  122. package/lib/reanimated1/core/AnimatedDebug.js +1 -1
  123. package/lib/reanimated1/core/AnimatedEvent.js +1 -1
  124. package/lib/reanimated1/core/AnimatedFunction.js +1 -1
  125. package/lib/reanimated1/core/AnimatedOperator.js +1 -1
  126. package/lib/reanimated1/core/AnimatedParam.js +1 -1
  127. package/lib/reanimated1/core/AnimatedProps.js +2 -2
  128. package/lib/reanimated1/core/AnimatedSet.js +1 -1
  129. package/lib/reanimated1/core/AnimatedStartClock.js +1 -1
  130. package/lib/reanimated1/core/AnimatedStopClock.js +1 -1
  131. package/lib/reanimated1/core/AnimatedStyle.js +1 -1
  132. package/lib/reanimated1/core/AnimatedTransform.js +1 -1
  133. package/lib/reanimated1/core/Core.test.js +30 -0
  134. package/lib/reanimated1/core/InternalAnimatedValue.js +1 -1
  135. package/lib/reanimated1/core/__mocks__/AnimatedProps.js +1 -1
  136. package/lib/reanimated1/derived/interpolate.js +1 -1
  137. package/lib/reanimated2/Colors.js +16 -12
  138. package/lib/reanimated2/NativeMethods.js +3 -14
  139. package/lib/reanimated2/{NativeReanimated.native.js → NativeReanimated/NativeReanimated.js} +19 -24
  140. package/lib/reanimated2/NativeReanimated/index.js +15 -0
  141. package/lib/reanimated2/PlatformChecker.js +16 -0
  142. package/lib/reanimated2/PropAdapters.js +14 -4
  143. package/lib/reanimated2/UpdateProps.js +14 -11
  144. package/lib/reanimated2/ViewDescriptorsSet.js +73 -0
  145. package/lib/reanimated2/WorkletEventHandler.js +15 -13
  146. package/lib/reanimated2/animation/commonTypes.js +1 -0
  147. package/lib/reanimated2/animation/decay.js +71 -0
  148. package/lib/reanimated2/animation/delay.js +64 -0
  149. package/lib/reanimated2/animation/index.js +8 -0
  150. package/lib/reanimated2/animation/repeat.js +69 -0
  151. package/lib/reanimated2/animation/sequence.js +72 -0
  152. package/lib/reanimated2/animation/spring.js +101 -0
  153. package/lib/reanimated2/animation/styleAnimation.js +166 -0
  154. package/lib/reanimated2/animation/timing.js +64 -0
  155. package/lib/reanimated2/animation/util.js +157 -0
  156. package/lib/reanimated2/commonTypes.js +1 -0
  157. package/lib/reanimated2/core.js +35 -39
  158. package/lib/reanimated2/globals.d.ts +47 -1
  159. package/lib/reanimated2/hook/Hooks.js +9 -0
  160. package/lib/reanimated2/hook/commonTypes.js +1 -0
  161. package/lib/reanimated2/hook/index.js +8 -0
  162. package/lib/reanimated2/hook/useAnimatedGestureHandler.js +50 -0
  163. package/lib/reanimated2/hook/useAnimatedReaction.js +37 -0
  164. package/lib/reanimated2/hook/useAnimatedRef.js +25 -0
  165. package/lib/reanimated2/hook/useAnimatedScrollHandler.js +41 -0
  166. package/lib/reanimated2/hook/useAnimatedStyle.js +376 -0
  167. package/lib/reanimated2/hook/useDerivedValue.js +36 -0
  168. package/lib/reanimated2/hook/useSharedValue.js +17 -0
  169. package/lib/reanimated2/hook/utils.js +175 -0
  170. package/lib/reanimated2/index.js +3 -2
  171. package/lib/reanimated2/interpolation.js +95 -86
  172. package/lib/reanimated2/jestUtils.js +0 -12
  173. package/lib/reanimated2/js-reanimated/JSReanimated.js +9 -10
  174. package/lib/reanimated2/js-reanimated/index.js +57 -1
  175. package/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.js +58 -0
  176. package/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +69 -0
  177. package/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +125 -0
  178. package/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +193 -0
  179. package/lib/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +1 -0
  180. package/lib/reanimated2/layoutReanimation/animationBuilder/index.js +3 -0
  181. package/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +325 -207
  182. package/lib/reanimated2/layoutReanimation/defaultAnimations/Default.js +36 -0
  183. package/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.js +235 -187
  184. package/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.js +327 -269
  185. package/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +146 -0
  186. package/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +85 -0
  187. package/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.js +119 -0
  188. package/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +289 -0
  189. package/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.js +159 -121
  190. package/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +83 -65
  191. package/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +371 -277
  192. package/lib/reanimated2/layoutReanimation/defaultAnimations/index.js +4 -0
  193. package/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +78 -0
  194. package/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +128 -0
  195. package/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +37 -0
  196. package/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +41 -0
  197. package/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +34 -0
  198. package/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +46 -0
  199. package/lib/reanimated2/layoutReanimation/defaultTransitions/index.js +6 -0
  200. package/lib/reanimated2/layoutReanimation/index.js +3 -2
  201. package/lib/reanimated2/platform-specific/RNRenderer.web.js +2 -0
  202. package/lib/reanimated2/utils.js +9 -0
  203. package/libSo/fbjni/jni/arm64-v8a/libfbjni.so +0 -0
  204. package/libSo/fbjni/jni/armeabi-v7a/libfbjni.so +0 -0
  205. package/libSo/fbjni/jni/x86/libfbjni.so +0 -0
  206. package/libSo/fbjni/jni/x86_64/libfbjni.so +0 -0
  207. package/package.json +21 -10
  208. package/plugin.js +244 -85
  209. package/react-native-reanimated.d.ts +531 -453
  210. package/src/ConfigHelper.js +1 -0
  211. package/src/ReanimatedModule.native.js +10 -2
  212. package/src/createAnimatedComponent.js +64 -30
  213. package/src/reanimated1/core/AnimatedAlways.js +1 -1
  214. package/src/reanimated1/core/AnimatedBezier.js +1 -1
  215. package/src/reanimated1/core/AnimatedBlock.js +1 -1
  216. package/src/reanimated1/core/AnimatedCall.js +1 -1
  217. package/src/reanimated1/core/AnimatedCallFunc.js +1 -1
  218. package/src/reanimated1/core/AnimatedConcat.js +1 -1
  219. package/src/reanimated1/core/AnimatedCond.js +1 -1
  220. package/src/reanimated1/core/AnimatedDebug.js +1 -1
  221. package/src/reanimated1/core/AnimatedEvent.js +1 -1
  222. package/src/reanimated1/core/AnimatedFunction.js +1 -1
  223. package/src/reanimated1/core/AnimatedOperator.js +1 -1
  224. package/src/reanimated1/core/AnimatedParam.js +1 -1
  225. package/src/reanimated1/core/AnimatedProps.js +2 -2
  226. package/src/reanimated1/core/AnimatedSet.js +1 -1
  227. package/src/reanimated1/core/AnimatedStartClock.js +1 -1
  228. package/src/reanimated1/core/AnimatedStopClock.js +1 -1
  229. package/src/reanimated1/core/AnimatedStyle.js +1 -1
  230. package/src/reanimated1/core/AnimatedTransform.js +1 -1
  231. package/src/reanimated1/core/Core.test.js +30 -0
  232. package/src/reanimated1/core/InternalAnimatedValue.js +1 -1
  233. package/src/reanimated1/core/__mocks__/AnimatedProps.js +1 -1
  234. package/src/reanimated1/derived/interpolate.js +1 -1
  235. package/src/reanimated2/Colors.ts +30 -27
  236. package/src/reanimated2/Easing.ts +3 -1
  237. package/src/reanimated2/NativeMethods.ts +26 -16
  238. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +78 -0
  239. package/src/reanimated2/NativeReanimated/index.ts +18 -0
  240. package/src/reanimated2/PlatformChecker.ts +21 -0
  241. package/src/reanimated2/PropAdapters.ts +52 -34
  242. package/src/reanimated2/UpdateProps.ts +40 -20
  243. package/src/reanimated2/ViewDescriptorsSet.ts +108 -0
  244. package/src/reanimated2/WorkletEventHandler.ts +41 -23
  245. package/src/reanimated2/animation/commonTypes.ts +48 -0
  246. package/src/reanimated2/animation/decay.ts +141 -0
  247. package/src/reanimated2/animation/delay.ts +103 -0
  248. package/src/reanimated2/animation/index.ts +16 -0
  249. package/src/reanimated2/animation/repeat.ts +128 -0
  250. package/src/reanimated2/animation/sequence.ts +110 -0
  251. package/src/reanimated2/animation/spring.ts +165 -0
  252. package/src/reanimated2/animation/styleAnimation.ts +253 -0
  253. package/src/reanimated2/animation/timing.ts +109 -0
  254. package/src/reanimated2/animation/util.ts +242 -0
  255. package/src/reanimated2/commonTypes.ts +81 -0
  256. package/src/reanimated2/core.ts +128 -82
  257. package/src/reanimated2/globals.d.ts +47 -1
  258. package/src/reanimated2/hook/Hooks.ts +16 -0
  259. package/src/reanimated2/hook/commonTypes.ts +12 -0
  260. package/src/reanimated2/hook/index.ts +25 -0
  261. package/src/reanimated2/hook/useAnimatedGestureHandler.ts +110 -0
  262. package/src/reanimated2/hook/useAnimatedReaction.ts +49 -0
  263. package/src/reanimated2/hook/useAnimatedRef.ts +34 -0
  264. package/src/reanimated2/hook/useAnimatedScrollHandler.ts +83 -0
  265. package/src/reanimated2/hook/useAnimatedStyle.ts +538 -0
  266. package/src/reanimated2/hook/useDerivedValue.ts +48 -0
  267. package/src/reanimated2/hook/useSharedValue.ts +22 -0
  268. package/src/reanimated2/hook/utils.ts +259 -0
  269. package/src/reanimated2/index.ts +3 -2
  270. package/src/reanimated2/interpolation.ts +170 -101
  271. package/src/reanimated2/jestUtils.ts +0 -12
  272. package/src/reanimated2/js-reanimated/JSReanimated.ts +47 -22
  273. package/src/reanimated2/js-reanimated/Mapper.ts +1 -1
  274. package/src/reanimated2/js-reanimated/index.ts +71 -0
  275. package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.tsx +62 -0
  276. package/src/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.ts +91 -0
  277. package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +169 -0
  278. package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +263 -0
  279. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +78 -0
  280. package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +16 -0
  281. package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +243 -121
  282. package/src/reanimated2/layoutReanimation/defaultAnimations/Default.ts +43 -0
  283. package/src/reanimated2/layoutReanimation/defaultAnimations/Fade.ts +95 -53
  284. package/src/reanimated2/layoutReanimation/defaultAnimations/Flip.ts +114 -64
  285. package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +179 -0
  286. package/src/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.ts +93 -0
  287. package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +132 -0
  288. package/src/reanimated2/layoutReanimation/defaultAnimations/Rotate.ts +333 -0
  289. package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +84 -50
  290. package/src/reanimated2/layoutReanimation/defaultAnimations/Stretch.ts +41 -23
  291. package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +234 -154
  292. package/src/reanimated2/layoutReanimation/defaultAnimations/index.ts +4 -0
  293. package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +104 -0
  294. package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +213 -0
  295. package/src/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.ts +60 -0
  296. package/src/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.ts +58 -0
  297. package/src/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.ts +41 -0
  298. package/src/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.ts +78 -0
  299. package/src/reanimated2/layoutReanimation/defaultTransitions/index.ts +6 -0
  300. package/src/reanimated2/layoutReanimation/index.ts +3 -2
  301. package/src/reanimated2/platform-specific/RNRenderer.web.ts +2 -0
  302. package/src/reanimated2/utils.ts +21 -0
  303. package/android/react-native-reanimated-62-hermes.aar +0 -0
  304. package/android/react-native-reanimated-62-jsc.aar +0 -0
  305. package/ios/LayoutReanimation/REAAnimationRootView.h +0 -12
  306. package/ios/LayoutReanimation/REAAnimationRootView.m +0 -16
  307. package/ios/LayoutReanimation/REAAnimationRootViewManager.h +0 -9
  308. package/ios/LayoutReanimation/REAAnimationRootViewManager.m +0 -49
  309. package/ios/LayoutReanimation/REAReactBatchObserver.h +0 -20
  310. package/ios/LayoutReanimation/REAReactBatchObserver.m +0 -125
  311. package/ios/LayoutReanimation/REASnapshooter.h +0 -19
  312. package/ios/LayoutReanimation/REASnapshooter.m +0 -64
  313. package/ios/LayoutReanimation/REAViewTraverser.h +0 -13
  314. package/ios/LayoutReanimation/REAViewTraverser.m +0 -40
  315. package/lib/reanimated2/Hooks.js +0 -732
  316. package/lib/reanimated2/NativeReanimated.js +0 -4
  317. package/lib/reanimated2/animations.js +0 -713
  318. package/lib/reanimated2/js-reanimated/index.web.js +0 -20
  319. package/lib/reanimated2/layoutReanimation/AnimatedRoot.js +0 -55
  320. package/lib/reanimated2/layoutReanimation/defaultAnimationsBuilder.js +0 -374
  321. package/src/reanimated2/Hooks.ts +0 -918
  322. package/src/reanimated2/NativeReanimated.native.ts +0 -61
  323. package/src/reanimated2/NativeReanimated.ts +0 -5
  324. package/src/reanimated2/animations.ts +0 -868
  325. package/src/reanimated2/js-reanimated/index.js +0 -0
  326. package/src/reanimated2/js-reanimated/index.web.ts +0 -29
  327. package/src/reanimated2/layoutReanimation/AnimatedRoot.tsx +0 -68
  328. package/src/reanimated2/layoutReanimation/defaultAnimationsBuilder.ts +0 -440
@@ -0,0 +1,263 @@
1
+ import { Easing, EasingFn } from '../../Easing';
2
+ import { withDelay, withSequence, withTiming } from '../../animation';
3
+ import {
4
+ AnimationFunction,
5
+ EntryExitAnimationFunction,
6
+ IEntryExitAnimationBuilder,
7
+ KeyframeProps,
8
+ } from './commonTypes';
9
+ import { TransformProperty, StyleProps } from '../../commonTypes';
10
+ export interface KeyframePoint {
11
+ duration: number;
12
+ value: number | string;
13
+ easing?: EasingFn;
14
+ }
15
+ export interface ParsedKeyframesDefinition {
16
+ initialValues: StyleProps;
17
+ keyframes: Record<string, KeyframePoint[]>;
18
+ }
19
+ export class Keyframe implements IEntryExitAnimationBuilder {
20
+ durationV?: number;
21
+ delayV?: number;
22
+ callbackV?: (finished: boolean) => void;
23
+ definitions: Record<string, KeyframeProps>;
24
+
25
+ /*
26
+ Keyframe definition should be passed in the constructor as the map
27
+ which keys are between range 0 - 100 (%) and correspond to the point in the animation progress.
28
+ */
29
+ constructor(definitions: Record<string, KeyframeProps>) {
30
+ this.definitions = definitions;
31
+ }
32
+
33
+ private parseDefinitions(): ParsedKeyframesDefinition {
34
+ /*
35
+ Each style property contain an array with all their key points:
36
+ value, duration of transition to that value, and optional easing function (defaults to Linear)
37
+ */
38
+ const parsedKeyframes: Record<string, KeyframePoint[]> = {};
39
+ /*
40
+ Parsing keyframes 'from' and 'to'.
41
+ */
42
+ if (this.definitions.from) {
43
+ if (this.definitions['0']) {
44
+ throw Error(
45
+ "You cannot provide both keyframe 0 and 'from' as they both specified initial values"
46
+ );
47
+ }
48
+ this.definitions['0'] = this.definitions.from;
49
+ delete this.definitions.from;
50
+ }
51
+ if (this.definitions.to) {
52
+ if (this.definitions['100']) {
53
+ throw Error(
54
+ "You cannot provide both keyframe 100 and 'to' as they both specified values at the end of the animation."
55
+ );
56
+ }
57
+ this.definitions['100'] = this.definitions.to;
58
+ delete this.definitions.to;
59
+ }
60
+ /*
61
+ One of the assumptions is that keyframe 0 is required to properly set initial values.
62
+ Every other keyframe should contain properties from the set provided as initial values.
63
+ */
64
+ if (!this.definitions['0']) {
65
+ throw Error(
66
+ "Please provide 0, or 'from' keyframe with initial state of your object."
67
+ );
68
+ }
69
+ const initialValues: StyleProps = this.definitions['0'] as StyleProps;
70
+ /*
71
+ Initialize parsedKeyframes for properties provided in initial keyframe
72
+ */
73
+ Object.keys(initialValues).forEach((styleProp: string) => {
74
+ if (styleProp === 'transform') {
75
+ initialValues[styleProp]?.forEach((transformStyle, index) => {
76
+ Object.keys(transformStyle).forEach((transformProp: string) => {
77
+ parsedKeyframes[
78
+ index.toString() + '_transform:' + transformProp
79
+ ] = [];
80
+ });
81
+ });
82
+ } else {
83
+ parsedKeyframes[styleProp] = [];
84
+ }
85
+ });
86
+
87
+ const duration: number = this.durationV ? this.durationV : 500;
88
+ const animationKeyPoints: Array<string> = Array.from(
89
+ Object.keys(this.definitions)
90
+ );
91
+
92
+ const getAnimationDuration = (
93
+ key: string,
94
+ currentKeyPoint: number
95
+ ): number => {
96
+ const maxDuration = (currentKeyPoint / 100) * duration;
97
+ const currentDuration = parsedKeyframes[key].reduce(
98
+ (acc: number, value: KeyframePoint) => acc + value.duration,
99
+ 0
100
+ );
101
+ return maxDuration - currentDuration;
102
+ };
103
+
104
+ /*
105
+ Other keyframes can't contain properties that were not specified in initial keyframe.
106
+ */
107
+ const addKeyPoint = ({
108
+ key,
109
+ value,
110
+ currentKeyPoint,
111
+ easing,
112
+ }: {
113
+ key: string;
114
+ value: string | number;
115
+ currentKeyPoint: number;
116
+ easing?: EasingFn;
117
+ }): void => {
118
+ if (!(key in parsedKeyframes)) {
119
+ throw Error(
120
+ "Keyframe can contain only that set of properties that were provide with initial values (keyframe 0 or 'from')"
121
+ );
122
+ }
123
+ parsedKeyframes[key].push({
124
+ duration: getAnimationDuration(key, currentKeyPoint),
125
+ value: value,
126
+ easing: easing,
127
+ });
128
+ };
129
+ animationKeyPoints
130
+ .filter((value: string) => parseInt(value) !== 0)
131
+ .sort((a: string, b: string) => parseInt(a) - parseInt(b))
132
+ .forEach((keyPoint: string) => {
133
+ if (parseInt(keyPoint) < 0 || parseInt(keyPoint) > 100) {
134
+ throw Error('Keyframe should be in between range 0 - 100.');
135
+ }
136
+ const keyframe: KeyframeProps = this.definitions[keyPoint];
137
+ const easing = keyframe.easing;
138
+ delete keyframe.easing;
139
+ const addKeyPointWith = (key: string, value: string | number) =>
140
+ addKeyPoint({
141
+ key,
142
+ value,
143
+ currentKeyPoint: parseInt(keyPoint),
144
+ easing,
145
+ });
146
+ Object.keys(keyframe).forEach((key: string) => {
147
+ if (key === 'transform') {
148
+ keyframe[key]?.forEach(
149
+ (transformStyle: { [key: string]: any }, index) => {
150
+ Object.keys(transformStyle).forEach((transformProp: string) => {
151
+ addKeyPointWith(
152
+ index.toString() + '_transform:' + transformProp,
153
+ transformStyle[transformProp]
154
+ );
155
+ });
156
+ }
157
+ );
158
+ } else {
159
+ addKeyPointWith(key, keyframe[key]);
160
+ }
161
+ });
162
+ });
163
+ return { initialValues: initialValues, keyframes: parsedKeyframes };
164
+ }
165
+
166
+ duration(durationMs: number): Keyframe {
167
+ this.durationV = durationMs;
168
+ return this;
169
+ }
170
+
171
+ delay(delayMs: number): Keyframe {
172
+ this.delayV = delayMs;
173
+ return this;
174
+ }
175
+
176
+ withCallback(callback: (finsihed: boolean) => void): Keyframe {
177
+ this.callbackV = callback;
178
+ return this;
179
+ }
180
+
181
+ private getDelayFunction(): AnimationFunction {
182
+ const delay = this.delayV;
183
+ return delay
184
+ ? withDelay
185
+ : (_, animation) => {
186
+ 'worklet';
187
+ return animation;
188
+ };
189
+ }
190
+
191
+ build = (): EntryExitAnimationFunction => {
192
+ const delay = this.delayV;
193
+ const delayFunction = this.getDelayFunction();
194
+ const { keyframes, initialValues } = this.parseDefinitions();
195
+ const callback = this.callbackV;
196
+
197
+ return (_targetValues) => {
198
+ 'worklet';
199
+ const animations: StyleProps = {};
200
+
201
+ /*
202
+ For each style property, an animations sequence is created that corresponds with its key points.
203
+ Transform style properties require special handling because of their nested structure.
204
+ */
205
+ const addAnimation = (key: string) => {
206
+ const keyframePoints = keyframes[key];
207
+ // in case if property was only passed as initial value
208
+ if (keyframePoints.length === 0) return;
209
+ const animation = delayFunction(
210
+ delay,
211
+ keyframePoints.length === 1
212
+ ? withTiming(keyframePoints[0].value, {
213
+ duration: keyframePoints[0].duration,
214
+ easing: keyframePoints[0].easing
215
+ ? keyframePoints[0].easing
216
+ : Easing.linear,
217
+ })
218
+ : withSequence.apply(
219
+ this,
220
+ keyframePoints.map((keyframePoint: KeyframePoint) =>
221
+ withTiming(keyframePoint.value, {
222
+ duration: keyframePoint.duration,
223
+ easing: keyframePoint.easing
224
+ ? keyframePoint.easing
225
+ : Easing.linear,
226
+ })
227
+ )
228
+ )
229
+ );
230
+ if (key.includes('transform')) {
231
+ if (!('transform' in animations)) {
232
+ animations.transform = [];
233
+ }
234
+ animations.transform?.push(<TransformProperty>{
235
+ [key.split(':')[1]]: animation,
236
+ });
237
+ } else {
238
+ animations[key] = animation;
239
+ }
240
+ };
241
+ Object.keys(initialValues).forEach((key: string) => {
242
+ if (key.includes('transform')) {
243
+ initialValues[key].forEach(
244
+ (transformProp: Record<string, number | string>, index: number) => {
245
+ Object.keys(transformProp).forEach((transformPropKey: string) => {
246
+ addAnimation(
247
+ index.toString() + '_transform:' + transformPropKey
248
+ );
249
+ });
250
+ }
251
+ );
252
+ } else {
253
+ addAnimation(key);
254
+ }
255
+ });
256
+ return {
257
+ animations: animations,
258
+ initialValues: initialValues,
259
+ callback: callback,
260
+ };
261
+ };
262
+ };
263
+ }
@@ -0,0 +1,78 @@
1
+ import { EasingFn } from '../../Easing';
2
+ import { StyleProps } from '../../commonTypes';
3
+
4
+ export interface KeyframeProps extends StyleProps {
5
+ easing?: EasingFn;
6
+ [key: string]: any;
7
+ }
8
+
9
+ export type LayoutAnimation = {
10
+ initialValues: StyleProps;
11
+ animations: StyleProps;
12
+ callback?: (finished: boolean) => void;
13
+ };
14
+
15
+ export type AnimationFunction = (a?: any, b?: any, c?: any) => any; // this is just a temporary mock
16
+
17
+ export interface EntryExitAnimationsValues {
18
+ originX: number;
19
+ originY: number;
20
+ width: number;
21
+ height: number;
22
+ globalOriginX: number;
23
+ globalOriginY: number;
24
+ }
25
+
26
+ export type EntryExitAnimationFunction = (
27
+ targetValues: EntryExitAnimationsValues
28
+ ) => LayoutAnimation;
29
+
30
+ export interface LayoutAnimationsValues {
31
+ originX: number;
32
+ originY: number;
33
+ width: number;
34
+ height: number;
35
+ globalOriginX: number;
36
+ globalOriginY: number;
37
+ boriginX: number;
38
+ boriginY: number;
39
+ bwidth: number;
40
+ bheight: number;
41
+ bglobalOriginX: number;
42
+ bglobalOriginY: number;
43
+ windowWidth: number;
44
+ windowHeight: number;
45
+ }
46
+
47
+ export type LayoutAnimationFunction = (
48
+ targetValues: LayoutAnimationsValues
49
+ ) => LayoutAnimation;
50
+
51
+ export interface ILayoutAnimationBuilder {
52
+ build: () => LayoutAnimationFunction;
53
+ }
54
+
55
+ export interface BaseLayoutAnimationConfig {
56
+ duration?: number;
57
+ easing?: EasingFn;
58
+ type?: AnimationFunction;
59
+ damping?: number;
60
+ mass?: number;
61
+ stiffness?: number;
62
+ overshootClamping?: number;
63
+ restDisplacementThreshold?: number;
64
+ restSpeedThreshold?: number;
65
+ }
66
+
67
+ export interface BaseBuilderAnimationConfig extends BaseLayoutAnimationConfig {
68
+ rotate?: number | string;
69
+ }
70
+
71
+ export type LayoutAnimationAndConfig = [
72
+ AnimationFunction,
73
+ BaseBuilderAnimationConfig
74
+ ];
75
+
76
+ export interface IEntryExitAnimationBuilder {
77
+ build: () => EntryExitAnimationFunction;
78
+ }
@@ -0,0 +1,16 @@
1
+ export { BaseAnimationBuilder } from './BaseAnimationBuilder';
2
+ export { ComplexAnimationBuilder } from './ComplexAnimationBuilder';
3
+ export { Keyframe } from './Keyframe';
4
+ export {
5
+ LayoutAnimation,
6
+ AnimationFunction,
7
+ EntryExitAnimationsValues,
8
+ EntryExitAnimationFunction,
9
+ LayoutAnimationsValues,
10
+ LayoutAnimationFunction,
11
+ ILayoutAnimationBuilder,
12
+ BaseLayoutAnimationConfig,
13
+ BaseBuilderAnimationConfig,
14
+ LayoutAnimationAndConfig,
15
+ IEntryExitAnimationBuilder,
16
+ } from './commonTypes';