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
@@ -1,713 +0,0 @@
1
- /* global _WORKLET */
2
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3
- // @ts-nocheck
4
- import { Easing } from './Easing';
5
- import { isColor, convertToHSVA, toRGBA } from './Colors';
6
- import NativeReanimated from './NativeReanimated';
7
- import { Platform } from 'react-native';
8
- let IN_STYLE_UPDATER = false;
9
- export function initialUpdaterRun(updater) {
10
- IN_STYLE_UPDATER = true;
11
- const result = updater();
12
- IN_STYLE_UPDATER = false;
13
- return result;
14
- }
15
- export function transform(value, handler) {
16
- 'worklet';
17
- if (value === undefined) {
18
- return undefined;
19
- }
20
- if (typeof value === 'string') {
21
- // toInt
22
- // TODO handle color
23
- const match = value.match(/([A-Za-z]*)(-?\d*\.?\d*)([A-Za-z%]*)/);
24
- const prefix = match[1];
25
- const suffix = match[3];
26
- const number = match[2];
27
- handler.__prefix = prefix;
28
- handler.__suffix = suffix;
29
- return parseFloat(number);
30
- }
31
- // toString if __prefix is available and number otherwise
32
- if (handler.__prefix === undefined) {
33
- return value;
34
- }
35
- return handler.__prefix + value + handler.__suffix;
36
- }
37
- export function transformAnimation(animation) {
38
- 'worklet';
39
- if (!animation) {
40
- return;
41
- }
42
- animation.toValue = transform(animation.toValue, animation);
43
- animation.current = transform(animation.current, animation);
44
- animation.startValue = transform(animation.startValue, animation);
45
- }
46
- export function decorateAnimation(animation) {
47
- 'worklet';
48
- if (animation.isHigherOrder) {
49
- return;
50
- }
51
- const baseOnStart = animation.onStart;
52
- const baseOnFrame = animation.onFrame;
53
- const animationCopy = Object.assign({}, animation);
54
- delete animationCopy.callback;
55
- const prefNumberSuffOnStart = (animation, value, timestamp, previousAnimation) => {
56
- const val = transform(value, animation);
57
- transformAnimation(animation);
58
- if (previousAnimation !== animation)
59
- transformAnimation(previousAnimation);
60
- baseOnStart(animation, val, timestamp, previousAnimation);
61
- transformAnimation(animation);
62
- if (previousAnimation !== animation)
63
- transformAnimation(previousAnimation);
64
- };
65
- const prefNumberSuffOnFrame = (animation, timestamp) => {
66
- transformAnimation(animation);
67
- const res = baseOnFrame(animation, timestamp);
68
- transformAnimation(animation);
69
- return res;
70
- };
71
- const tab = ['H', 'S', 'V', 'A'];
72
- const colorOnStart = (animation, value, timestamp, previousAnimation) => {
73
- let HSVAValue;
74
- let HSVACurrent;
75
- let HSVAToValue;
76
- const res = [];
77
- if (isColor(value)) {
78
- HSVACurrent = convertToHSVA(animation.current);
79
- HSVAValue = convertToHSVA(value);
80
- if (animation.toValue) {
81
- HSVAToValue = convertToHSVA(animation.toValue);
82
- }
83
- }
84
- tab.forEach((i, index) => {
85
- animation[i] = Object.assign({}, animationCopy);
86
- animation[i].current = HSVACurrent[index];
87
- animation[i].toValue = HSVAToValue ? HSVAToValue[index] : undefined;
88
- animation[i].onStart(animation[i], HSVAValue[index], timestamp, previousAnimation ? previousAnimation[i] : undefined);
89
- res.push(animation[i].current);
90
- });
91
- animation.current = toRGBA(res);
92
- };
93
- const colorOnFrame = (animation, timestamp) => {
94
- const HSVACurrent = convertToHSVA(animation.current);
95
- const res = [];
96
- let finished = true;
97
- tab.forEach((i, index) => {
98
- animation[i].current = HSVACurrent[index];
99
- finished &= animation[i].onFrame(animation[i], timestamp);
100
- res.push(animation[i].current);
101
- });
102
- animation.current = toRGBA(res);
103
- return finished;
104
- };
105
- animation.onStart = (animation, value, timestamp, previousAnimation) => {
106
- if (isColor(value)) {
107
- colorOnStart(animation, value, timestamp, previousAnimation);
108
- animation.onFrame = colorOnFrame;
109
- return;
110
- }
111
- else if (typeof value === 'string') {
112
- prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);
113
- animation.onFrame = prefNumberSuffOnFrame;
114
- return;
115
- }
116
- baseOnStart(animation, value, timestamp, previousAnimation);
117
- };
118
- }
119
- export function defineAnimation(starting, factory) {
120
- 'worklet';
121
- if (IN_STYLE_UPDATER) {
122
- return starting;
123
- }
124
- const create = () => {
125
- 'worklet';
126
- const animation = factory();
127
- decorateAnimation(animation);
128
- return animation;
129
- };
130
- if (_WORKLET || !NativeReanimated.native) {
131
- return create();
132
- }
133
- return create;
134
- }
135
- export function cancelAnimation(sharedValue) {
136
- 'worklet';
137
- // setting the current value cancels the animation if one is currently running
138
- sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign
139
- }
140
- // TODO it should work only if there was no animation before.
141
- export function withStartValue(startValue, animation) {
142
- 'worklet';
143
- return defineAnimation(startValue, () => {
144
- 'worklet';
145
- if (!_WORKLET && typeof animation === 'function') {
146
- animation = animation();
147
- }
148
- animation.current = startValue;
149
- return animation;
150
- });
151
- }
152
- export function withTiming(toValue, userConfig, callback) {
153
- 'worklet';
154
- return defineAnimation(toValue, () => {
155
- 'worklet';
156
- const config = {
157
- duration: 300,
158
- easing: Easing.inOut(Easing.quad),
159
- };
160
- if (userConfig) {
161
- Object.keys(userConfig).forEach((key) => (config[key] = userConfig[key]));
162
- }
163
- function timing(animation, now) {
164
- const { toValue, progress, startTime, current } = animation;
165
- const runtime = now - startTime;
166
- if (runtime >= config.duration) {
167
- // reset startTime to avoid reusing finished animation config in `start` method
168
- animation.startTime = 0;
169
- animation.current = toValue;
170
- return true;
171
- }
172
- const newProgress = animation.easing(runtime / config.duration);
173
- animation.current +=
174
- ((toValue - current) * (newProgress - progress)) / (1 - progress);
175
- animation.progress = newProgress;
176
- return false;
177
- }
178
- function onStart(animation, value, now, previousAnimation) {
179
- if (previousAnimation &&
180
- previousAnimation.type === 'timing' &&
181
- previousAnimation.toValue === toValue &&
182
- previousAnimation.startTime) {
183
- // to maintain continuity of timing animations we check if we are starting
184
- // new timing over the old one with the same parameters. If so, we want
185
- // to copy animation timeline properties
186
- animation.startTime = previousAnimation.startTime;
187
- animation.progress = previousAnimation.progress;
188
- }
189
- else {
190
- animation.startTime = now;
191
- animation.progress = 0;
192
- }
193
- animation.current = value;
194
- if (typeof config.easing === 'object') {
195
- animation.easing = config.easing.factory();
196
- }
197
- else {
198
- animation.easing = config.easing;
199
- }
200
- }
201
- return {
202
- type: 'timing',
203
- onFrame: timing,
204
- onStart,
205
- progress: 0,
206
- toValue,
207
- current: toValue,
208
- callback,
209
- };
210
- });
211
- }
212
- export function withStyleAnimation(styleAnimations) {
213
- 'worklet';
214
- return defineAnimation({}, () => {
215
- 'worklet';
216
- const onFrame = (animation, now) => {
217
- let stillGoing = false;
218
- Object.keys(styleAnimations).forEach((key) => {
219
- const currentAnimation = animation.styleAnimations[key];
220
- if (key === 'transform') {
221
- const transform = animation.styleAnimations.transform;
222
- for (let i = 0; i < transform.length; i++) {
223
- const type = Object.keys(transform[i])[0];
224
- const currentAnimation = transform[i][type];
225
- if (currentAnimation.finished) {
226
- continue;
227
- }
228
- const finished = currentAnimation.onFrame(currentAnimation, now);
229
- if (finished) {
230
- currentAnimation.finished = true;
231
- if (currentAnimation.callback) {
232
- currentAnimation.callback(true);
233
- }
234
- }
235
- else {
236
- stillGoing = true;
237
- }
238
- animation.current.transform[i][type] = currentAnimation.current;
239
- }
240
- }
241
- else {
242
- if (!currentAnimation.finished) {
243
- const finished = currentAnimation.onFrame(currentAnimation, now);
244
- if (finished) {
245
- currentAnimation.finished = true;
246
- if (currentAnimation.callback) {
247
- currentAnimation.callback(true);
248
- }
249
- }
250
- else {
251
- stillGoing = true;
252
- }
253
- animation.current[key] = currentAnimation.current;
254
- }
255
- }
256
- });
257
- return !stillGoing;
258
- };
259
- const onStart = (animation, value, now, previousAnimation) => {
260
- Object.keys(styleAnimations).forEach((key) => {
261
- if (key === 'transform') {
262
- animation.current.transform = [];
263
- const transform = styleAnimations.transform;
264
- const prevTransform = null;
265
- const valueTransform = value.transform;
266
- if (previousAnimation &&
267
- previousAnimation.styleAnimations &&
268
- previousAnimation.styleAnimations.transform) {
269
- prevAnimation = previousAnimation.styleAnimations.transform;
270
- }
271
- for (let i = 0; i < transform.length; i++) {
272
- // duplication of code to avoid function calls
273
- let prevAnimation = null;
274
- const type = Object.keys(transform[i])[0];
275
- if (prevTransform && prevTransform.length > i) {
276
- const prevTransformStep = prevTransform[i];
277
- const prevType = Object.keys(prevTransformStep)[0];
278
- if (prevType === type) {
279
- prevAnimation = prevTransformStep[prevType];
280
- }
281
- }
282
- let prevVal = 0;
283
- if (prevAnimation != null) {
284
- prevVal = prevAnimation.current;
285
- }
286
- if (valueTransform != null &&
287
- valueTransform.length > i &&
288
- valueTransform[i][type]) {
289
- prevVal = valueTransform[i][type];
290
- }
291
- const obj = {};
292
- obj[type] = prevVal;
293
- animation.current.transform[i] = obj;
294
- let currentAnimation = transform[i][type];
295
- if (typeof currentAnimation !== 'object' &&
296
- !Array.isArray(currentAnimation)) {
297
- currentAnimation = withTiming(currentAnimation, { duration: 0 });
298
- transform[i][type] = currentAnimation;
299
- }
300
- currentAnimation.onStart(currentAnimation, prevVal, now, prevAnimation);
301
- }
302
- }
303
- else {
304
- let prevAnimation = null;
305
- if (previousAnimation &&
306
- previousAnimation.styleAnimations &&
307
- previousAnimation.styleAnimations[key]) {
308
- prevAnimation = previousAnimation.styleAnimations[key];
309
- }
310
- let prevVal = 0;
311
- if (prevAnimation != null) {
312
- prevVal = prevAnimation.current;
313
- }
314
- if (value[key]) {
315
- prevVal = value[key];
316
- }
317
- animation.current[key] = prevVal;
318
- let currentAnimation = animation.styleAnimations[key];
319
- if (typeof currentAnimation !== 'object' &&
320
- !Array.isArray(currentAnimation)) {
321
- currentAnimation = withTiming(currentAnimation, { duration: 0 });
322
- animation.styleAnimations[key] = currentAnimation;
323
- }
324
- currentAnimation.onStart(currentAnimation, prevVal, now, prevAnimation);
325
- }
326
- });
327
- };
328
- const callback = (finished) => {
329
- if (!finished) {
330
- Object.keys(styleAnimations).forEach((key) => {
331
- const currentAnimation = styleAnimations[key];
332
- if (key === 'transform') {
333
- const transform = styleAnimations.transform;
334
- for (let i = 0; i < transform.length; i++) {
335
- const type = Object.keys(transform[i])[0];
336
- const currentAnimation = transform[i][type];
337
- if (currentAnimation.finished) {
338
- continue;
339
- }
340
- if (currentAnimation.callback) {
341
- currentAnimation.callback(false);
342
- }
343
- }
344
- }
345
- else {
346
- if (!currentAnimation.finished) {
347
- if (currentAnimation.callback) {
348
- currentAnimation.callback(false);
349
- }
350
- }
351
- }
352
- });
353
- }
354
- };
355
- return {
356
- isHigherOrder: true,
357
- onFrame,
358
- onStart,
359
- current: {},
360
- styleAnimations,
361
- callback,
362
- };
363
- });
364
- }
365
- export function withSpring(toValue, userConfig, callback) {
366
- 'worklet';
367
- return defineAnimation(toValue, () => {
368
- 'worklet';
369
- // TODO: figure out why we can't use spread or Object.assign here
370
- // when user config is "frozen object" we can't enumerate it (perhaps
371
- // something is wrong with the object prototype).
372
- const config = {
373
- damping: 10,
374
- mass: 1,
375
- stiffness: 100,
376
- overshootClamping: false,
377
- restDisplacementThreshold: 0.01,
378
- restSpeedThreshold: 2,
379
- };
380
- if (userConfig) {
381
- Object.keys(userConfig).forEach((key) => (config[key] = userConfig[key]));
382
- }
383
- function spring(animation, now) {
384
- const { toValue, lastTimestamp, current, velocity } = animation;
385
- const deltaTime = Math.min(now - lastTimestamp, 64);
386
- animation.lastTimestamp = now;
387
- const c = config.damping;
388
- const m = config.mass;
389
- const k = config.stiffness;
390
- const v0 = -velocity;
391
- const x0 = toValue - current;
392
- const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio
393
- const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)
394
- const omega1 = omega0 * Math.sqrt(1 - Math.pow(zeta, 2)); // exponential decay
395
- const t = deltaTime / 1000;
396
- const sin1 = Math.sin(omega1 * t);
397
- const cos1 = Math.cos(omega1 * t);
398
- // under damped
399
- const underDampedEnvelope = Math.exp(-zeta * omega0 * t);
400
- const underDampedFrag1 = underDampedEnvelope *
401
- (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);
402
- const underDampedPosition = toValue - underDampedFrag1;
403
- // This looks crazy -- it's actually just the derivative of the oscillation function
404
- const underDampedVelocity = zeta * omega0 * underDampedFrag1 -
405
- underDampedEnvelope *
406
- (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);
407
- // critically damped
408
- const criticallyDampedEnvelope = Math.exp(-omega0 * t);
409
- const criticallyDampedPosition = toValue - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);
410
- const criticallyDampedVelocity = criticallyDampedEnvelope *
411
- (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);
412
- const isOvershooting = () => {
413
- if (config.overshootClamping && config.stiffness !== 0) {
414
- return current < toValue
415
- ? animation.current > toValue
416
- : animation.current < toValue;
417
- }
418
- else {
419
- return false;
420
- }
421
- };
422
- const isVelocity = Math.abs(velocity) < config.restSpeedThreshold;
423
- const isDisplacement = config.stiffness === 0 ||
424
- Math.abs(toValue - current) < config.restDisplacementThreshold;
425
- if (zeta < 1) {
426
- animation.current = underDampedPosition;
427
- animation.velocity = underDampedVelocity;
428
- }
429
- else {
430
- animation.current = criticallyDampedPosition;
431
- animation.velocity = criticallyDampedVelocity;
432
- }
433
- if (isOvershooting() || (isVelocity && isDisplacement)) {
434
- if (config.stiffness !== 0) {
435
- animation.velocity = 0;
436
- animation.current = toValue;
437
- }
438
- return true;
439
- }
440
- }
441
- function onStart(animation, value, now, previousAnimation) {
442
- animation.current = value;
443
- if (previousAnimation) {
444
- animation.velocity =
445
- previousAnimation.velocity || animation.velocity || 0;
446
- animation.lastTimestamp = previousAnimation.lastTimestamp || now;
447
- }
448
- else {
449
- animation.lastTimestamp = now;
450
- }
451
- }
452
- return {
453
- onFrame: spring,
454
- onStart,
455
- toValue,
456
- velocity: config.velocity || 0,
457
- current: toValue,
458
- callback,
459
- };
460
- });
461
- }
462
- export function withDecay(userConfig, callback) {
463
- 'worklet';
464
- return defineAnimation(0, () => {
465
- 'worklet';
466
- const config = {
467
- deceleration: 0.998,
468
- velocityFactor: Platform.OS !== 'web' ? 1 : 1000,
469
- };
470
- if (userConfig) {
471
- Object.keys(userConfig).forEach((key) => (config[key] = userConfig[key]));
472
- }
473
- const VELOCITY_EPS = Platform.OS !== 'web' ? 1 : 1 / 20;
474
- const SLOPE_FACTOR = 0.1;
475
- function decay(animation, now) {
476
- const { lastTimestamp, startTimestamp, initialVelocity, current, velocity, } = animation;
477
- const deltaTime = Math.min(now - lastTimestamp, 64);
478
- const v = velocity *
479
- Math.exp(-(1 - config.deceleration) * (now - startTimestamp) * SLOPE_FACTOR);
480
- animation.current =
481
- current + (v * config.velocityFactor * deltaTime) / 1000; // /1000 because time is in ms not in s
482
- animation.velocity = v;
483
- animation.lastTimestamp = now;
484
- if (config.clamp) {
485
- if (initialVelocity < 0 && animation.current <= config.clamp[0]) {
486
- animation.current = config.clamp[0];
487
- return true;
488
- }
489
- else if (initialVelocity > 0 &&
490
- animation.current >= config.clamp[1]) {
491
- animation.current = config.clamp[1];
492
- return true;
493
- }
494
- }
495
- if (Math.abs(v) < VELOCITY_EPS) {
496
- return true;
497
- }
498
- }
499
- function validateConfig() {
500
- if (config.clamp) {
501
- if (Array.isArray(config.clamp)) {
502
- if (config.clamp.length !== 2) {
503
- console.error(`clamp array must contain 2 items but is given ${config.clamp.length}`);
504
- }
505
- }
506
- else {
507
- console.error(`config.clamp must be an array but is ${typeof config.clamp}`);
508
- }
509
- }
510
- if (config.velocityFactor <= 0) {
511
- console.error(`config.velocityFactor must be greather then 0 but is ${config.velocityFactor}`);
512
- }
513
- }
514
- function onStart(animation, value, now) {
515
- animation.current = value;
516
- animation.lastTimestamp = now;
517
- animation.startTimestamp = now;
518
- animation.initialVelocity = config.velocity;
519
- validateConfig();
520
- }
521
- return {
522
- onFrame: decay,
523
- onStart,
524
- velocity: config.velocity || 0,
525
- callback,
526
- };
527
- });
528
- }
529
- export function withDelay(delayMs, _nextAnimation) {
530
- 'worklet';
531
- return defineAnimation(_nextAnimation, () => {
532
- 'worklet';
533
- const nextAnimation = typeof _nextAnimation === 'function' ? _nextAnimation() : _nextAnimation;
534
- function delay(animation, now) {
535
- const { startTime, started, previousAnimation } = animation;
536
- if (now - startTime > delayMs) {
537
- if (!started) {
538
- nextAnimation.onStart(nextAnimation, animation.current, now, previousAnimation);
539
- animation.previousAnimation = null;
540
- animation.started = true;
541
- }
542
- const finished = nextAnimation.onFrame(nextAnimation, now);
543
- animation.current = nextAnimation.current;
544
- return finished;
545
- }
546
- else if (previousAnimation) {
547
- const finished = previousAnimation.onFrame(previousAnimation, now);
548
- animation.current = previousAnimation.current;
549
- if (finished) {
550
- animation.previousAnimation = null;
551
- }
552
- }
553
- return false;
554
- }
555
- function onStart(animation, value, now, previousAnimation) {
556
- animation.startTime = now;
557
- animation.started = false;
558
- animation.current = value;
559
- animation.previousAnimation = previousAnimation;
560
- }
561
- const callback = (finished) => {
562
- if (nextAnimation.callback) {
563
- nextAnimation.callback(finished);
564
- }
565
- };
566
- return {
567
- isHigherOrder: true,
568
- onFrame: delay,
569
- onStart,
570
- current: nextAnimation.current,
571
- callback,
572
- };
573
- });
574
- }
575
- export function withSequence(..._animations) {
576
- 'worklet';
577
- return defineAnimation(_animations[0], () => {
578
- 'worklet';
579
- const animations = _animations.map((a) => {
580
- const result = typeof a === 'function' ? a() : a;
581
- result.finished = false;
582
- return result;
583
- });
584
- const firstAnimation = animations[0];
585
- const callback = (finished) => {
586
- if (finished) {
587
- // we want to call the callback after every single animation
588
- // not after all of them
589
- return;
590
- }
591
- // this is going to be called only if sequence has been cancelled
592
- animations.forEach((animation) => {
593
- if (typeof animation.callback === 'function' && !animation.finished) {
594
- animation.callback(finished);
595
- }
596
- });
597
- };
598
- function sequence(animation, now) {
599
- const currentAnim = animations[animation.animationIndex];
600
- const finished = currentAnim.onFrame(currentAnim, now);
601
- animation.current = currentAnim.current;
602
- if (finished) {
603
- // we want to call the callback after every single animation
604
- if (currentAnim.callback) {
605
- currentAnim.callback(true /* finished */);
606
- }
607
- currentAnim.finished = true;
608
- animation.animationIndex += 1;
609
- if (animation.animationIndex < animations.length) {
610
- const nextAnim = animations[animation.animationIndex];
611
- nextAnim.onStart(nextAnim, currentAnim.current, now, currentAnim);
612
- return false;
613
- }
614
- return true;
615
- }
616
- return false;
617
- }
618
- function onStart(animation, value, now, previousAnimation) {
619
- if (animations.length === 1) {
620
- throw Error('withSequence() animation require more than one animation as argument');
621
- }
622
- animation.animationIndex = 0;
623
- if (previousAnimation === undefined) {
624
- previousAnimation = animations[animations.length - 1];
625
- }
626
- firstAnimation.onStart(firstAnimation, value, now, previousAnimation);
627
- }
628
- return {
629
- isHigherOrder: true,
630
- onFrame: sequence,
631
- onStart,
632
- animationIndex: 0,
633
- current: firstAnimation.current,
634
- callback,
635
- };
636
- });
637
- }
638
- export function withRepeat(_nextAnimation, numberOfReps = 2, reverse = false, callback) {
639
- 'worklet';
640
- return defineAnimation(_nextAnimation, () => {
641
- 'worklet';
642
- const nextAnimation = typeof _nextAnimation === 'function' ? _nextAnimation() : _nextAnimation;
643
- function repeat(animation, now) {
644
- const finished = nextAnimation.onFrame(nextAnimation, now);
645
- animation.current = nextAnimation.current;
646
- if (finished) {
647
- animation.reps += 1;
648
- // call inner animation's callback on every repetition
649
- // as the second argument the animation's current value is passed
650
- if (nextAnimation.callback) {
651
- nextAnimation.callback(true /* finished */, animation.current);
652
- }
653
- if (numberOfReps > 0 && animation.reps >= numberOfReps) {
654
- return true;
655
- }
656
- const startValue = reverse
657
- ? nextAnimation.current
658
- : animation.startValue;
659
- if (reverse) {
660
- nextAnimation.toValue = animation.startValue;
661
- animation.startValue = startValue;
662
- }
663
- nextAnimation.onStart(nextAnimation, startValue, now, nextAnimation.previousAnimation);
664
- return false;
665
- }
666
- return false;
667
- }
668
- const repCallback = (finished) => {
669
- if (callback) {
670
- callback(finished);
671
- }
672
- // when cancelled call inner animation's callback
673
- if (!finished && nextAnimation.callback) {
674
- nextAnimation.callback(false /* finished */);
675
- }
676
- };
677
- function onStart(animation, value, now, previousAnimation) {
678
- animation.startValue = value;
679
- animation.reps = 0;
680
- nextAnimation.onStart(nextAnimation, value, now, previousAnimation);
681
- }
682
- return {
683
- isHigherOrder: true,
684
- onFrame: repeat,
685
- onStart,
686
- reps: 0,
687
- current: nextAnimation.current,
688
- callback: repCallback,
689
- };
690
- });
691
- }
692
- /* Deprecated section, kept for backward compatibility. Will be removed soon */
693
- export function delay(delayMs, _nextAnimation) {
694
- 'worklet';
695
- console.warn('Method `delay` is deprecated. Please use `withDelay` instead');
696
- return withDelay(delayMs, _nextAnimation);
697
- }
698
- export function repeat(_nextAnimation, numberOfReps = 2, reverse = false, callback) {
699
- 'worklet';
700
- console.warn('Method `repeat` is deprecated. Please use `withRepeat` instead');
701
- return withRepeat(_nextAnimation, numberOfReps, reverse, callback);
702
- }
703
- export function loop(nextAnimation, numberOfLoops = 1) {
704
- 'worklet';
705
- console.warn('Method `loop` is deprecated. Please use `withRepeat` instead');
706
- return repeat(nextAnimation, Math.round(numberOfLoops * 2), true);
707
- }
708
- export function sequence(..._animations) {
709
- 'worklet';
710
- console.warn('Method `sequence` is deprecated. Please use `withSequence` instead');
711
- return withSequence(..._animations);
712
- }
713
- /* Deprecated section end */