react-native-reanimated 3.0.2 → 3.1.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 (473) hide show
  1. package/Common/cpp/Fabric/FabricUtils.h +1 -1
  2. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +38 -27
  3. package/Common/cpp/SharedItems/Shareables.h +22 -0
  4. package/Common/cpp/Tools/PlatformDepMethodsHolder.h +2 -0
  5. package/Common/cpp/Tools/RuntimeDecorator.cpp +4 -1
  6. package/Common/cpp/Tools/RuntimeDecorator.h +2 -1
  7. package/Common/cpp/Tools/SingleInstanceChecker.h +14 -2
  8. package/RNReanimated.podspec +5 -2
  9. package/android/CMakeLists.txt +4 -0
  10. package/android/build.gradle +18 -10
  11. package/android/src/main/cpp/NativeProxy.cpp +316 -337
  12. package/android/src/main/cpp/NativeProxy.h +53 -11
  13. package/android/src/main/java/com/swmansion/reanimated/NativeMethodsHelper.java +7 -12
  14. package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +11 -8
  15. package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +21 -14
  16. package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +0 -3
  17. package/ios/Fabric/REAInitializerRCTFabricSurface.mm +1 -0
  18. package/ios/REANodesManager.h +1 -0
  19. package/ios/REANodesManager.mm +30 -4
  20. package/ios/keyboardObserver/REAKeyboardEventObserver.m +51 -130
  21. package/ios/native/NativeMethods.mm +1 -1
  22. package/ios/native/NativeProxy.mm +4 -1
  23. package/ios/native/REAIOSErrorHandler.mm +1 -1
  24. package/ios/native/REAIOSLogger.mm +1 -1
  25. package/ios/native/REAIOSScheduler.mm +1 -1
  26. package/ios/native/REAInitializer.mm +1 -1
  27. package/ios/native/REAMessageThread.mm +2 -2
  28. package/lib/commonjs/Animated.js +0 -8
  29. package/lib/commonjs/Animated.js.map +1 -1
  30. package/lib/commonjs/ConfigHelper.js +8 -19
  31. package/lib/commonjs/ConfigHelper.js.map +1 -1
  32. package/lib/commonjs/createAnimatedComponent.js +20 -158
  33. package/lib/commonjs/createAnimatedComponent.js.map +1 -1
  34. package/lib/commonjs/index.js +0 -9
  35. package/lib/commonjs/index.js.map +1 -1
  36. package/lib/commonjs/index.web.js +0 -7
  37. package/lib/commonjs/index.web.js.map +1 -1
  38. package/lib/commonjs/reanimated2/Bezier.js +14 -34
  39. package/lib/commonjs/reanimated2/Bezier.js.map +1 -1
  40. package/lib/commonjs/reanimated2/Colors.js +60 -132
  41. package/lib/commonjs/reanimated2/Colors.js.map +1 -1
  42. package/lib/commonjs/reanimated2/Easing.js +81 -34
  43. package/lib/commonjs/reanimated2/Easing.js.map +1 -1
  44. package/lib/commonjs/reanimated2/NativeMethods.js +8 -20
  45. package/lib/commonjs/reanimated2/NativeMethods.js.map +1 -1
  46. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +5 -31
  47. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  48. package/lib/commonjs/reanimated2/NativeReanimated/index.js +0 -7
  49. package/lib/commonjs/reanimated2/NativeReanimated/index.js.map +1 -1
  50. package/lib/commonjs/reanimated2/PlatformChecker.js +0 -6
  51. package/lib/commonjs/reanimated2/PlatformChecker.js.map +1 -1
  52. package/lib/commonjs/reanimated2/PropAdapters.js +10 -12
  53. package/lib/commonjs/reanimated2/PropAdapters.js.map +1 -1
  54. package/lib/commonjs/reanimated2/UpdateProps.js +3 -12
  55. package/lib/commonjs/reanimated2/UpdateProps.js.map +1 -1
  56. package/lib/commonjs/reanimated2/ViewDescriptorsSet.js +0 -10
  57. package/lib/commonjs/reanimated2/ViewDescriptorsSet.js.map +1 -1
  58. package/lib/commonjs/reanimated2/WorkletEventHandler.js +5 -22
  59. package/lib/commonjs/reanimated2/WorkletEventHandler.js.map +1 -1
  60. package/lib/commonjs/reanimated2/animation/decay.js +7 -18
  61. package/lib/commonjs/reanimated2/animation/decay.js.map +1 -1
  62. package/lib/commonjs/reanimated2/animation/delay.js +0 -11
  63. package/lib/commonjs/reanimated2/animation/delay.js.map +1 -1
  64. package/lib/commonjs/reanimated2/animation/index.js +0 -8
  65. package/lib/commonjs/reanimated2/animation/index.js.map +1 -1
  66. package/lib/commonjs/reanimated2/animation/repeat.js +6 -22
  67. package/lib/commonjs/reanimated2/animation/repeat.js.map +1 -1
  68. package/lib/commonjs/reanimated2/animation/sequence.js +3 -20
  69. package/lib/commonjs/reanimated2/animation/sequence.js.map +1 -1
  70. package/lib/commonjs/reanimated2/animation/spring.js +11 -23
  71. package/lib/commonjs/reanimated2/animation/spring.js.map +1 -1
  72. package/lib/commonjs/reanimated2/animation/styleAnimation.js +3 -35
  73. package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
  74. package/lib/commonjs/reanimated2/animation/timing.js +0 -11
  75. package/lib/commonjs/reanimated2/animation/timing.js.map +1 -1
  76. package/lib/commonjs/reanimated2/animation/util.js +11 -41
  77. package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
  78. package/lib/commonjs/reanimated2/commonTypes.js +16 -23
  79. package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
  80. package/lib/commonjs/reanimated2/component/FlatList.js +0 -16
  81. package/lib/commonjs/reanimated2/component/FlatList.js.map +1 -1
  82. package/lib/commonjs/reanimated2/component/Image.js +0 -4
  83. package/lib/commonjs/reanimated2/component/Image.js.map +1 -1
  84. package/lib/commonjs/reanimated2/component/ScrollView.js +0 -4
  85. package/lib/commonjs/reanimated2/component/ScrollView.js.map +1 -1
  86. package/lib/commonjs/reanimated2/component/Text.js +0 -4
  87. package/lib/commonjs/reanimated2/component/Text.js.map +1 -1
  88. package/lib/commonjs/reanimated2/component/View.js +0 -4
  89. package/lib/commonjs/reanimated2/component/View.js.map +1 -1
  90. package/lib/commonjs/reanimated2/core.js +6 -48
  91. package/lib/commonjs/reanimated2/core.js.map +1 -1
  92. package/lib/commonjs/reanimated2/errors.js +3 -14
  93. package/lib/commonjs/reanimated2/errors.js.map +1 -1
  94. package/lib/commonjs/reanimated2/fabricUtils.js +3 -5
  95. package/lib/commonjs/reanimated2/fabricUtils.js.map +1 -1
  96. package/lib/commonjs/reanimated2/fabricUtils.web.js +1 -3
  97. package/lib/commonjs/reanimated2/fabricUtils.web.js.map +1 -1
  98. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -12
  99. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  100. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -17
  101. package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  102. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  103. package/lib/commonjs/reanimated2/hook/Hooks.js +0 -5
  104. package/lib/commonjs/reanimated2/hook/Hooks.js.map +1 -1
  105. package/lib/commonjs/reanimated2/hook/commonTypes.js.map +1 -1
  106. package/lib/commonjs/reanimated2/hook/index.js +0 -12
  107. package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
  108. package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js +4 -17
  109. package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  110. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +2 -9
  111. package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  112. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +1 -11
  113. package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  114. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +0 -12
  115. package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
  116. package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js +2 -9
  117. package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  118. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +8 -23
  119. package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  120. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +13 -71
  121. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  122. package/lib/commonjs/reanimated2/hook/useDerivedValue.js +4 -13
  123. package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
  124. package/lib/commonjs/reanimated2/hook/useFrameCallback.js +0 -5
  125. package/lib/commonjs/reanimated2/hook/useFrameCallback.js.map +1 -1
  126. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +0 -7
  127. package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  128. package/lib/commonjs/reanimated2/hook/useSharedValue.js +2 -7
  129. package/lib/commonjs/reanimated2/hook/useSharedValue.js.map +1 -1
  130. package/lib/commonjs/reanimated2/hook/utils.js +8 -39
  131. package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
  132. package/lib/commonjs/reanimated2/index.js +0 -26
  133. package/lib/commonjs/reanimated2/index.js.map +1 -1
  134. package/lib/commonjs/reanimated2/initializers.js +21 -43
  135. package/lib/commonjs/reanimated2/initializers.js.map +1 -1
  136. package/lib/commonjs/reanimated2/interpolateColor.js +6 -43
  137. package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
  138. package/lib/commonjs/reanimated2/interpolation.js +14 -29
  139. package/lib/commonjs/reanimated2/interpolation.js.map +1 -1
  140. package/lib/commonjs/reanimated2/jestUtils.js +11 -44
  141. package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
  142. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +15 -39
  143. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  144. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +9 -28
  145. package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
  146. package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js +7 -37
  147. package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
  148. package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js +5 -18
  149. package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js.map +1 -1
  150. package/lib/commonjs/reanimated2/js-reanimated/global.js +2 -9
  151. package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
  152. package/lib/commonjs/reanimated2/js-reanimated/index.js +3 -14
  153. package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
  154. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -26
  155. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  156. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -49
  157. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  158. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -43
  159. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  160. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +4 -5
  161. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  162. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +0 -4
  163. package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  164. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +4 -23
  165. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  166. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -74
  167. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  168. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -53
  169. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  170. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -63
  171. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  172. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -26
  173. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  174. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -13
  175. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  176. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -23
  177. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  178. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -43
  179. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  180. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -43
  181. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  182. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -23
  183. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  184. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -83
  185. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  186. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js +0 -20
  187. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  188. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -22
  189. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  190. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -29
  191. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  192. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -9
  193. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  194. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -11
  195. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  196. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -8
  197. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  198. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -12
  199. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  200. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js +0 -12
  201. package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  202. package/lib/commonjs/reanimated2/layoutReanimation/index.js +0 -9
  203. package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
  204. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -17
  205. package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  206. package/lib/commonjs/reanimated2/mappers.js +26 -32
  207. package/lib/commonjs/reanimated2/mappers.js.map +1 -1
  208. package/lib/commonjs/reanimated2/mock.js +5 -15
  209. package/lib/commonjs/reanimated2/mock.js.map +1 -1
  210. package/lib/commonjs/reanimated2/mutables.js +2 -28
  211. package/lib/commonjs/reanimated2/mutables.js.map +1 -1
  212. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js +0 -2
  213. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  214. package/lib/commonjs/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  215. package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js +31 -0
  216. package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
  217. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +0 -2
  218. package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
  219. package/lib/commonjs/reanimated2/platform-specific/jsVersion.js +14 -0
  220. package/lib/commonjs/reanimated2/platform-specific/jsVersion.js.map +1 -0
  221. package/lib/commonjs/reanimated2/pluginUtils.js +0 -1
  222. package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -1
  223. package/lib/commonjs/reanimated2/shareables.js +92 -49
  224. package/lib/commonjs/reanimated2/shareables.js.map +1 -1
  225. package/lib/commonjs/reanimated2/threads.js +42 -46
  226. package/lib/commonjs/reanimated2/threads.js.map +1 -1
  227. package/lib/commonjs/reanimated2/utils.js +0 -5
  228. package/lib/commonjs/reanimated2/utils.js.map +1 -1
  229. package/lib/commonjs/reanimated2/valueSetter.js +6 -21
  230. package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
  231. package/lib/commonjs/setAndForwardRef.js +3 -3
  232. package/lib/commonjs/setAndForwardRef.js.map +1 -1
  233. package/lib/module/Animated.js.map +1 -1
  234. package/lib/module/ConfigHelper.js +9 -15
  235. package/lib/module/ConfigHelper.js.map +1 -1
  236. package/lib/module/createAnimatedComponent.js +20 -139
  237. package/lib/module/createAnimatedComponent.js.map +1 -1
  238. package/lib/module/index.js +0 -2
  239. package/lib/module/index.js.map +1 -1
  240. package/lib/module/index.web.js.map +1 -1
  241. package/lib/module/reanimated2/Bezier.js +14 -33
  242. package/lib/module/reanimated2/Bezier.js.map +1 -1
  243. package/lib/module/reanimated2/Colors.js +59 -109
  244. package/lib/module/reanimated2/Colors.js.map +1 -1
  245. package/lib/module/reanimated2/Easing.js +37 -33
  246. package/lib/module/reanimated2/Easing.js.map +1 -1
  247. package/lib/module/reanimated2/NativeMethods.js +8 -15
  248. package/lib/module/reanimated2/NativeMethods.js.map +1 -1
  249. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +5 -27
  250. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  251. package/lib/module/reanimated2/NativeReanimated/index.js +0 -2
  252. package/lib/module/reanimated2/NativeReanimated/index.js.map +1 -1
  253. package/lib/module/reanimated2/PlatformChecker.js.map +1 -1
  254. package/lib/module/reanimated2/PropAdapters.js +12 -10
  255. package/lib/module/reanimated2/PropAdapters.js.map +1 -1
  256. package/lib/module/reanimated2/UpdateProps.js +3 -5
  257. package/lib/module/reanimated2/UpdateProps.js.map +1 -1
  258. package/lib/module/reanimated2/ViewDescriptorsSet.js +0 -6
  259. package/lib/module/reanimated2/ViewDescriptorsSet.js.map +1 -1
  260. package/lib/module/reanimated2/WorkletEventHandler.js +5 -18
  261. package/lib/module/reanimated2/WorkletEventHandler.js.map +1 -1
  262. package/lib/module/reanimated2/animation/decay.js +7 -15
  263. package/lib/module/reanimated2/animation/decay.js.map +1 -1
  264. package/lib/module/reanimated2/animation/delay.js +0 -9
  265. package/lib/module/reanimated2/animation/delay.js.map +1 -1
  266. package/lib/module/reanimated2/animation/index.js.map +1 -1
  267. package/lib/module/reanimated2/animation/repeat.js +6 -20
  268. package/lib/module/reanimated2/animation/repeat.js.map +1 -1
  269. package/lib/module/reanimated2/animation/sequence.js +3 -18
  270. package/lib/module/reanimated2/animation/sequence.js.map +1 -1
  271. package/lib/module/reanimated2/animation/spring.js +11 -21
  272. package/lib/module/reanimated2/animation/spring.js.map +1 -1
  273. package/lib/module/reanimated2/animation/styleAnimation.js +7 -31
  274. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  275. package/lib/module/reanimated2/animation/timing.js +0 -8
  276. package/lib/module/reanimated2/animation/timing.js.map +1 -1
  277. package/lib/module/reanimated2/animation/util.js +10 -33
  278. package/lib/module/reanimated2/animation/util.js.map +1 -1
  279. package/lib/module/reanimated2/commonTypes.js +12 -19
  280. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  281. package/lib/module/reanimated2/component/FlatList.js +0 -4
  282. package/lib/module/reanimated2/component/FlatList.js.map +1 -1
  283. package/lib/module/reanimated2/component/Image.js.map +1 -1
  284. package/lib/module/reanimated2/component/ScrollView.js.map +1 -1
  285. package/lib/module/reanimated2/component/Text.js.map +1 -1
  286. package/lib/module/reanimated2/component/View.js.map +1 -1
  287. package/lib/module/reanimated2/core.js +6 -22
  288. package/lib/module/reanimated2/core.js.map +1 -1
  289. package/lib/module/reanimated2/errors.js +3 -13
  290. package/lib/module/reanimated2/errors.js.map +1 -1
  291. package/lib/module/reanimated2/fabricUtils.js +3 -3
  292. package/lib/module/reanimated2/fabricUtils.js.map +1 -1
  293. package/lib/module/reanimated2/fabricUtils.web.js +1 -1
  294. package/lib/module/reanimated2/fabricUtils.web.js.map +1 -1
  295. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -8
  296. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
  297. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -15
  298. package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
  299. package/lib/module/reanimated2/globals.d.js.map +1 -1
  300. package/lib/module/reanimated2/hook/Hooks.js +3 -2
  301. package/lib/module/reanimated2/hook/Hooks.js.map +1 -1
  302. package/lib/module/reanimated2/hook/commonTypes.js.map +1 -1
  303. package/lib/module/reanimated2/hook/index.js.map +1 -1
  304. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js +3 -14
  305. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  306. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +2 -5
  307. package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
  308. package/lib/module/reanimated2/hook/useAnimatedReaction.js +1 -7
  309. package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
  310. package/lib/module/reanimated2/hook/useAnimatedRef.js +0 -6
  311. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  312. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js +2 -7
  313. package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
  314. package/lib/module/reanimated2/hook/useAnimatedSensor.js +9 -20
  315. package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
  316. package/lib/module/reanimated2/hook/useAnimatedStyle.js +13 -59
  317. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  318. package/lib/module/reanimated2/hook/useDerivedValue.js +4 -8
  319. package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
  320. package/lib/module/reanimated2/hook/useFrameCallback.js.map +1 -1
  321. package/lib/module/reanimated2/hook/useScrollViewOffset.js +0 -1
  322. package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
  323. package/lib/module/reanimated2/hook/useSharedValue.js +2 -3
  324. package/lib/module/reanimated2/hook/useSharedValue.js.map +1 -1
  325. package/lib/module/reanimated2/hook/utils.js +8 -21
  326. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  327. package/lib/module/reanimated2/index.js.map +1 -1
  328. package/lib/module/reanimated2/initializers.js +23 -37
  329. package/lib/module/reanimated2/initializers.js.map +1 -1
  330. package/lib/module/reanimated2/interpolateColor.js +5 -34
  331. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  332. package/lib/module/reanimated2/interpolation.js +13 -28
  333. package/lib/module/reanimated2/interpolation.js.map +1 -1
  334. package/lib/module/reanimated2/jestUtils.js +11 -35
  335. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  336. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +15 -35
  337. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  338. package/lib/module/reanimated2/js-reanimated/Mapper.js +9 -23
  339. package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
  340. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js +7 -35
  341. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
  342. package/lib/module/reanimated2/js-reanimated/MutableValue.js +5 -16
  343. package/lib/module/reanimated2/js-reanimated/MutableValue.js.map +1 -1
  344. package/lib/module/reanimated2/js-reanimated/global.js +2 -6
  345. package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
  346. package/lib/module/reanimated2/js-reanimated/index.js +3 -9
  347. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  348. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -23
  349. package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
  350. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -45
  351. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  352. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -39
  353. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  354. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +3 -3
  355. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  356. package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
  357. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +4 -19
  358. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  359. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -52
  360. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
  361. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -32
  362. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
  363. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -38
  364. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
  365. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -16
  366. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
  367. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -8
  368. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
  369. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -14
  370. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
  371. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -26
  372. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
  373. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -26
  374. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
  375. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -14
  376. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
  377. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -50
  378. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
  379. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
  380. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -17
  381. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  382. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -23
  383. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
  384. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -5
  385. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
  386. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -6
  387. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
  388. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -5
  389. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
  390. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -8
  391. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
  392. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
  393. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  394. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -13
  395. package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
  396. package/lib/module/reanimated2/mappers.js +26 -25
  397. package/lib/module/reanimated2/mappers.js.map +1 -1
  398. package/lib/module/reanimated2/mock.js +5 -15
  399. package/lib/module/reanimated2/mock.js.map +1 -1
  400. package/lib/module/reanimated2/mutables.js +2 -19
  401. package/lib/module/reanimated2/mutables.js.map +1 -1
  402. package/lib/module/reanimated2/platform-specific/RNRenderer.js.map +1 -1
  403. package/lib/module/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
  404. package/lib/module/reanimated2/platform-specific/checkCppVersion.js +24 -0
  405. package/lib/module/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
  406. package/lib/module/reanimated2/platform-specific/checkVersion.web.js +0 -1
  407. package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
  408. package/lib/module/reanimated2/platform-specific/jsVersion.js +7 -0
  409. package/lib/module/reanimated2/platform-specific/jsVersion.js.map +1 -0
  410. package/lib/module/reanimated2/pluginUtils.js.map +1 -1
  411. package/lib/module/reanimated2/shareables.js +96 -44
  412. package/lib/module/reanimated2/shareables.js.map +1 -1
  413. package/lib/module/reanimated2/threads.js +39 -33
  414. package/lib/module/reanimated2/threads.js.map +1 -1
  415. package/lib/module/reanimated2/utils.js +0 -3
  416. package/lib/module/reanimated2/utils.js.map +1 -1
  417. package/lib/module/reanimated2/valueSetter.js +6 -19
  418. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  419. package/lib/module/setAndForwardRef.js +3 -2
  420. package/lib/module/setAndForwardRef.js.map +1 -1
  421. package/package.json +46 -40
  422. package/plugin/.eslintrc.js +7 -0
  423. package/plugin/README.md +241 -0
  424. package/plugin/build/plugin.js +714 -0
  425. package/plugin/build/plugin.js.map +7 -0
  426. package/plugin/index.js +1 -807
  427. package/plugin/package.json +23 -0
  428. package/plugin/src/buildWorkletString.ts +213 -0
  429. package/plugin/src/commonObjects.ts +60 -0
  430. package/plugin/src/injectVersion.ts +37 -0
  431. package/plugin/src/makeWorklet.ts +375 -0
  432. package/plugin/src/plugin.ts +49 -0
  433. package/plugin/src/processForCalleesWorklets.ts +106 -0
  434. package/plugin/src/processIfGestureHandlerEventCallbackFunctionNode.ts +156 -0
  435. package/plugin/src/processIfWorkletFunction.ts +55 -0
  436. package/plugin/src/processIfWorkletNode.ts +44 -0
  437. package/plugin/src/processInlineStylesWarning.ts +129 -0
  438. package/plugin/src/processWorkletObjectMethod.ts +31 -0
  439. package/plugin/src/types.ts +15 -0
  440. package/plugin/src/utils.ts +6 -0
  441. package/plugin/tsconfig.json +15 -0
  442. package/plugin/yarn.lock +2193 -0
  443. package/react-native-reanimated.d.ts +1 -0
  444. package/scripts/reanimated_utils.rb +2 -2
  445. package/src/createAnimatedComponent.tsx +2 -3
  446. package/src/reanimated2/Easing.ts +19 -0
  447. package/src/reanimated2/NativeMethods.ts +9 -4
  448. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +2 -2
  449. package/src/reanimated2/UpdateProps.ts +2 -2
  450. package/src/reanimated2/animation/decay.ts +7 -1
  451. package/src/reanimated2/animation/styleAnimation.ts +5 -1
  452. package/src/reanimated2/core.ts +4 -4
  453. package/src/reanimated2/errors.ts +1 -0
  454. package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +12 -4
  455. package/src/reanimated2/globals.d.ts +71 -112
  456. package/src/reanimated2/hook/commonTypes.ts +1 -1
  457. package/src/reanimated2/hook/useAnimatedReaction.ts +2 -2
  458. package/src/reanimated2/hook/useAnimatedSensor.ts +2 -2
  459. package/src/reanimated2/initializers.ts +11 -8
  460. package/src/reanimated2/jestUtils.ts +0 -1
  461. package/src/reanimated2/js-reanimated/JSReanimated.ts +5 -1
  462. package/src/reanimated2/js-reanimated/index.ts +1 -1
  463. package/src/reanimated2/mappers.ts +26 -4
  464. package/src/reanimated2/mock.ts +1 -0
  465. package/src/reanimated2/platform-specific/checkCppVersion.ts +29 -0
  466. package/src/reanimated2/platform-specific/jsVersion.ts +6 -0
  467. package/src/reanimated2/shareables.ts +107 -8
  468. package/src/reanimated2/threads.ts +36 -17
  469. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +0 -42
  470. package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +0 -1
  471. package/lib/module/reanimated2/platform-specific/checkVersion.js +0 -35
  472. package/lib/module/reanimated2/platform-specific/checkVersion.js.map +0 -1
  473. package/src/reanimated2/platform-specific/checkVersion.ts +0 -39
@@ -8,19 +8,22 @@ export function withDecay(userConfig, callback) {
8
8
 
9
9
  const config = {
10
10
  deceleration: 0.998,
11
- velocityFactor: Platform.OS !== 'web' ? 1 : 1000,
11
+ velocityFactor: 1,
12
12
  velocity: 0,
13
13
  rubberBandFactor: 0.6
14
14
  };
15
-
16
15
  if (userConfig) {
17
16
  Object.keys(userConfig).forEach(key => config[key] = userConfig[key]);
18
17
  }
19
-
20
18
  const VELOCITY_EPS = Platform.OS !== 'web' ? 1 : 1 / 20;
21
19
  const SLOPE_FACTOR = 0.1;
22
- let decay;
23
20
 
21
+ // @piaskowyk: Velocity is expressed in pixels per second
22
+ // but pixels on Web are handled differently than on native
23
+ if (Platform.OS === 'web') {
24
+ config.velocity *= 1000;
25
+ }
26
+ let decay;
24
27
  if (config.rubberBandEffect) {
25
28
  decay = (animation, now) => {
26
29
  const {
@@ -33,18 +36,15 @@ export function withDecay(userConfig, callback) {
33
36
  const deltaTime = Math.min(now - lastTimestamp, 64);
34
37
  const clampIndex = initialVelocity > 0 ? 1 : 0;
35
38
  let derivative = 0;
36
-
37
39
  if (current < config.clamp[0] || current > config.clamp[1]) {
38
40
  derivative = current - config.clamp[clampIndex];
39
41
  }
40
-
41
42
  if (derivative !== 0) {
42
43
  animation.springActive = true;
43
44
  } else if (derivative === 0 && animation.springActive) {
44
45
  animation.current = config.clamp[clampIndex];
45
46
  return true;
46
47
  }
47
-
48
48
  const v = velocity * Math.exp(-(1 - config.deceleration) * (now - startTimestamp) * SLOPE_FACTOR) - derivative * config.rubberBandFactor;
49
49
  animation.current = current + v * config.velocityFactor * deltaTime / 1000;
50
50
  animation.velocity = v;
@@ -65,7 +65,6 @@ export function withDecay(userConfig, callback) {
65
65
  animation.current = current + v * config.velocityFactor * deltaTime / 1000;
66
66
  animation.velocity = v;
67
67
  animation.lastTimestamp = now;
68
-
69
68
  if (config.clamp) {
70
69
  if (initialVelocity < 0 && animation.current <= config.clamp[0]) {
71
70
  animation.current = config.clamp[0];
@@ -75,31 +74,25 @@ export function withDecay(userConfig, callback) {
75
74
  return true;
76
75
  }
77
76
  }
78
-
79
77
  return Math.abs(v) < VELOCITY_EPS;
80
78
  };
81
79
  }
82
-
83
80
  function validateConfig() {
84
81
  if (config.clamp) {
85
82
  if (!Array.isArray(config.clamp)) {
86
83
  throw Error(`config.clamp must be an array but is ${typeof config.clamp}`);
87
84
  }
88
-
89
85
  if (config.clamp.length !== 2) {
90
86
  throw Error(`clamp array must contain 2 items but is given ${config.clamp.length}`);
91
87
  }
92
88
  }
93
-
94
89
  if (config.velocityFactor <= 0) {
95
90
  throw Error(`config.velocityFactor must be greather then 0 but is ${config.velocityFactor}`);
96
91
  }
97
-
98
92
  if (config.rubberBandEffect && !config.clamp) {
99
93
  throw Error('You need to set `clamp` property when using `rubberBandEffect`.');
100
94
  }
101
95
  }
102
-
103
96
  function onStart(animation, value, now) {
104
97
  animation.current = value;
105
98
  animation.lastTimestamp = now;
@@ -107,7 +100,6 @@ export function withDecay(userConfig, callback) {
107
100
  animation.initialVelocity = config.velocity;
108
101
  validateConfig();
109
102
  }
110
-
111
103
  return {
112
104
  onFrame: decay,
113
105
  onStart,
@@ -1 +1 @@
1
- {"version":3,"names":["defineAnimation","Platform","withDecay","userConfig","callback","config","deceleration","velocityFactor","OS","velocity","rubberBandFactor","Object","keys","forEach","key","VELOCITY_EPS","SLOPE_FACTOR","decay","rubberBandEffect","animation","now","lastTimestamp","startTimestamp","current","initialVelocity","deltaTime","Math","min","clampIndex","derivative","clamp","springActive","v","exp","abs","validateConfig","Array","isArray","Error","length","onStart","value","onFrame"],"sources":["decay.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport {\n Animation,\n AnimationCallback,\n AnimationObject,\n AnimatableValue,\n Timestamp,\n} from '../commonTypes';\nimport { Platform } from 'react-native';\n\ninterface DecayConfig {\n deceleration?: number;\n velocityFactor?: number;\n clamp?: number[];\n velocity?: number;\n}\n\ninterface DefaultDecayConfig {\n deceleration: number;\n velocityFactor: number;\n clamp?: number[];\n velocity: number;\n rubberBandEffect?: boolean;\n rubberBandFactor: number;\n}\n\nexport interface DecayAnimation extends Animation<DecayAnimation> {\n lastTimestamp: Timestamp;\n startTimestamp: Timestamp;\n initialVelocity: number;\n velocity: number;\n current: AnimatableValue;\n}\n\nexport interface InnerDecayAnimation\n extends Omit<DecayAnimation, 'current'>,\n AnimationObject {\n current: number;\n}\n\nexport function withDecay(\n userConfig: DecayConfig,\n callback?: AnimationCallback\n): Animation<DecayAnimation> {\n 'worklet';\n\n return defineAnimation<DecayAnimation>(0, () => {\n 'worklet';\n const config: DefaultDecayConfig = {\n deceleration: 0.998,\n velocityFactor: Platform.OS !== 'web' ? 1 : 1000,\n velocity: 0,\n rubberBandFactor: 0.6,\n };\n if (userConfig) {\n Object.keys(userConfig).forEach(\n (key) =>\n ((config as any)[key] = userConfig[key as keyof typeof userConfig])\n );\n }\n\n const VELOCITY_EPS = Platform.OS !== 'web' ? 1 : 1 / 20;\n const SLOPE_FACTOR = 0.1;\n\n let decay: (animation: InnerDecayAnimation, now: number) => boolean;\n\n if (config.rubberBandEffect) {\n decay = (animation: InnerDecayAnimation, now: number): boolean => {\n const {\n lastTimestamp,\n startTimestamp,\n current,\n initialVelocity,\n velocity,\n } = animation;\n\n const deltaTime = Math.min(now - lastTimestamp, 64);\n const clampIndex = initialVelocity > 0 ? 1 : 0;\n let derivative = 0;\n if (current < config.clamp![0] || current > config.clamp![1]) {\n derivative = current - config.clamp![clampIndex];\n }\n\n if (derivative !== 0) {\n animation.springActive = true;\n } else if (derivative === 0 && animation.springActive) {\n animation.current = config.clamp![clampIndex];\n return true;\n }\n\n const v =\n velocity *\n Math.exp(\n -(1 - config.deceleration) * (now - startTimestamp) * SLOPE_FACTOR\n ) -\n derivative * config.rubberBandFactor;\n\n animation.current =\n current + (v * config.velocityFactor * deltaTime) / 1000;\n animation.velocity = v;\n animation.lastTimestamp = now;\n return false;\n };\n } else {\n decay = (animation: InnerDecayAnimation, now: number): boolean => {\n const {\n lastTimestamp,\n startTimestamp,\n initialVelocity,\n current,\n velocity,\n } = animation;\n\n const deltaTime = Math.min(now - lastTimestamp, 64);\n const v =\n velocity *\n Math.exp(\n -(1 - config.deceleration) * (now - startTimestamp) * SLOPE_FACTOR\n );\n animation.current =\n current + (v * config.velocityFactor * deltaTime) / 1000;\n animation.velocity = v;\n animation.lastTimestamp = now;\n\n if (config.clamp) {\n if (initialVelocity < 0 && animation.current <= config.clamp[0]) {\n animation.current = config.clamp[0];\n return true;\n } else if (\n initialVelocity > 0 &&\n animation.current >= config.clamp[1]\n ) {\n animation.current = config.clamp[1];\n return true;\n }\n }\n\n return Math.abs(v) < VELOCITY_EPS;\n };\n }\n\n function validateConfig(): void {\n if (config.clamp) {\n if (!Array.isArray(config.clamp)) {\n throw Error(\n `config.clamp must be an array but is ${typeof config.clamp}`\n );\n }\n if (config.clamp.length !== 2) {\n throw Error(\n `clamp array must contain 2 items but is given ${config.clamp.length}`\n );\n }\n }\n if (config.velocityFactor <= 0) {\n throw Error(\n `config.velocityFactor must be greather then 0 but is ${config.velocityFactor}`\n );\n }\n if (config.rubberBandEffect && !config.clamp) {\n throw Error(\n 'You need to set `clamp` property when using `rubberBandEffect`.'\n );\n }\n }\n\n function onStart(\n animation: DecayAnimation,\n value: number,\n now: Timestamp\n ): void {\n animation.current = value;\n animation.lastTimestamp = now;\n animation.startTimestamp = now;\n animation.initialVelocity = config.velocity;\n validateConfig();\n }\n\n return {\n onFrame: decay,\n onStart,\n callback,\n velocity: config.velocity ?? 0,\n initialVelocity: 0,\n current: 0,\n lastTimestamp: 0,\n startTimestamp: 0,\n } as DecayAnimation;\n });\n}\n"],"mappings":"AAAA,SAASA,eAAT,QAAgC,QAAhC;AAQA,SAASC,QAAT,QAAyB,cAAzB;AAgCA,OAAO,SAASC,SAAT,CACLC,UADK,EAELC,QAFK,EAGsB;EAC3B;;EAEA,OAAOJ,eAAe,CAAiB,CAAjB,EAAoB,MAAM;IAC9C;;IACA,MAAMK,MAA0B,GAAG;MACjCC,YAAY,EAAE,KADmB;MAEjCC,cAAc,EAAEN,QAAQ,CAACO,EAAT,KAAgB,KAAhB,GAAwB,CAAxB,GAA4B,IAFX;MAGjCC,QAAQ,EAAE,CAHuB;MAIjCC,gBAAgB,EAAE;IAJe,CAAnC;;IAMA,IAAIP,UAAJ,EAAgB;MACdQ,MAAM,CAACC,IAAP,CAAYT,UAAZ,EAAwBU,OAAxB,CACGC,GAAD,IACIT,MAAD,CAAgBS,GAAhB,IAAuBX,UAAU,CAACW,GAAD,CAFtC;IAID;;IAED,MAAMC,YAAY,GAAGd,QAAQ,CAACO,EAAT,KAAgB,KAAhB,GAAwB,CAAxB,GAA4B,IAAI,EAArD;IACA,MAAMQ,YAAY,GAAG,GAArB;IAEA,IAAIC,KAAJ;;IAEA,IAAIZ,MAAM,CAACa,gBAAX,EAA6B;MAC3BD,KAAK,GAAG,CAACE,SAAD,EAAiCC,GAAjC,KAA0D;QAChE,MAAM;UACJC,aADI;UAEJC,cAFI;UAGJC,OAHI;UAIJC,eAJI;UAKJf;QALI,IAMFU,SANJ;QAQA,MAAMM,SAAS,GAAGC,IAAI,CAACC,GAAL,CAASP,GAAG,GAAGC,aAAf,EAA8B,EAA9B,CAAlB;QACA,MAAMO,UAAU,GAAGJ,eAAe,GAAG,CAAlB,GAAsB,CAAtB,GAA0B,CAA7C;QACA,IAAIK,UAAU,GAAG,CAAjB;;QACA,IAAIN,OAAO,GAAGlB,MAAM,CAACyB,KAAP,CAAc,CAAd,CAAV,IAA8BP,OAAO,GAAGlB,MAAM,CAACyB,KAAP,CAAc,CAAd,CAA5C,EAA8D;UAC5DD,UAAU,GAAGN,OAAO,GAAGlB,MAAM,CAACyB,KAAP,CAAcF,UAAd,CAAvB;QACD;;QAED,IAAIC,UAAU,KAAK,CAAnB,EAAsB;UACpBV,SAAS,CAACY,YAAV,GAAyB,IAAzB;QACD,CAFD,MAEO,IAAIF,UAAU,KAAK,CAAf,IAAoBV,SAAS,CAACY,YAAlC,EAAgD;UACrDZ,SAAS,CAACI,OAAV,GAAoBlB,MAAM,CAACyB,KAAP,CAAcF,UAAd,CAApB;UACA,OAAO,IAAP;QACD;;QAED,MAAMI,CAAC,GACLvB,QAAQ,GACNiB,IAAI,CAACO,GAAL,CACE,EAAE,IAAI5B,MAAM,CAACC,YAAb,KAA8Bc,GAAG,GAAGE,cAApC,IAAsDN,YADxD,CADF,GAIAa,UAAU,GAAGxB,MAAM,CAACK,gBALtB;QAOAS,SAAS,CAACI,OAAV,GACEA,OAAO,GAAIS,CAAC,GAAG3B,MAAM,CAACE,cAAX,GAA4BkB,SAA7B,GAA0C,IADtD;QAEAN,SAAS,CAACV,QAAV,GAAqBuB,CAArB;QACAb,SAAS,CAACE,aAAV,GAA0BD,GAA1B;QACA,OAAO,KAAP;MACD,CAnCD;IAoCD,CArCD,MAqCO;MACLH,KAAK,GAAG,CAACE,SAAD,EAAiCC,GAAjC,KAA0D;QAChE,MAAM;UACJC,aADI;UAEJC,cAFI;UAGJE,eAHI;UAIJD,OAJI;UAKJd;QALI,IAMFU,SANJ;QAQA,MAAMM,SAAS,GAAGC,IAAI,CAACC,GAAL,CAASP,GAAG,GAAGC,aAAf,EAA8B,EAA9B,CAAlB;QACA,MAAMW,CAAC,GACLvB,QAAQ,GACRiB,IAAI,CAACO,GAAL,CACE,EAAE,IAAI5B,MAAM,CAACC,YAAb,KAA8Bc,GAAG,GAAGE,cAApC,IAAsDN,YADxD,CAFF;QAKAG,SAAS,CAACI,OAAV,GACEA,OAAO,GAAIS,CAAC,GAAG3B,MAAM,CAACE,cAAX,GAA4BkB,SAA7B,GAA0C,IADtD;QAEAN,SAAS,CAACV,QAAV,GAAqBuB,CAArB;QACAb,SAAS,CAACE,aAAV,GAA0BD,GAA1B;;QAEA,IAAIf,MAAM,CAACyB,KAAX,EAAkB;UAChB,IAAIN,eAAe,GAAG,CAAlB,IAAuBL,SAAS,CAACI,OAAV,IAAqBlB,MAAM,CAACyB,KAAP,CAAa,CAAb,CAAhD,EAAiE;YAC/DX,SAAS,CAACI,OAAV,GAAoBlB,MAAM,CAACyB,KAAP,CAAa,CAAb,CAApB;YACA,OAAO,IAAP;UACD,CAHD,MAGO,IACLN,eAAe,GAAG,CAAlB,IACAL,SAAS,CAACI,OAAV,IAAqBlB,MAAM,CAACyB,KAAP,CAAa,CAAb,CAFhB,EAGL;YACAX,SAAS,CAACI,OAAV,GAAoBlB,MAAM,CAACyB,KAAP,CAAa,CAAb,CAApB;YACA,OAAO,IAAP;UACD;QACF;;QAED,OAAOJ,IAAI,CAACQ,GAAL,CAASF,CAAT,IAAcjB,YAArB;MACD,CAlCD;IAmCD;;IAED,SAASoB,cAAT,GAAgC;MAC9B,IAAI9B,MAAM,CAACyB,KAAX,EAAkB;QAChB,IAAI,CAACM,KAAK,CAACC,OAAN,CAAchC,MAAM,CAACyB,KAArB,CAAL,EAAkC;UAChC,MAAMQ,KAAK,CACR,wCAAuC,OAAOjC,MAAM,CAACyB,KAAM,EADnD,CAAX;QAGD;;QACD,IAAIzB,MAAM,CAACyB,KAAP,CAAaS,MAAb,KAAwB,CAA5B,EAA+B;UAC7B,MAAMD,KAAK,CACR,iDAAgDjC,MAAM,CAACyB,KAAP,CAAaS,MAAO,EAD5D,CAAX;QAGD;MACF;;MACD,IAAIlC,MAAM,CAACE,cAAP,IAAyB,CAA7B,EAAgC;QAC9B,MAAM+B,KAAK,CACR,wDAAuDjC,MAAM,CAACE,cAAe,EADrE,CAAX;MAGD;;MACD,IAAIF,MAAM,CAACa,gBAAP,IAA2B,CAACb,MAAM,CAACyB,KAAvC,EAA8C;QAC5C,MAAMQ,KAAK,CACT,iEADS,CAAX;MAGD;IACF;;IAED,SAASE,OAAT,CACErB,SADF,EAEEsB,KAFF,EAGErB,GAHF,EAIQ;MACND,SAAS,CAACI,OAAV,GAAoBkB,KAApB;MACAtB,SAAS,CAACE,aAAV,GAA0BD,GAA1B;MACAD,SAAS,CAACG,cAAV,GAA2BF,GAA3B;MACAD,SAAS,CAACK,eAAV,GAA4BnB,MAAM,CAACI,QAAnC;MACA0B,cAAc;IACf;;IAED,OAAO;MACLO,OAAO,EAAEzB,KADJ;MAELuB,OAFK;MAGLpC,QAHK;MAILK,QAAQ,EAAEJ,MAAM,CAACI,QAAP,IAAmB,CAJxB;MAKLe,eAAe,EAAE,CALZ;MAMLD,OAAO,EAAE,CANJ;MAOLF,aAAa,EAAE,CAPV;MAQLC,cAAc,EAAE;IARX,CAAP;EAUD,CA9IqB,CAAtB;AA+ID"}
1
+ {"version":3,"names":["defineAnimation","Platform","withDecay","userConfig","callback","config","deceleration","velocityFactor","velocity","rubberBandFactor","Object","keys","forEach","key","VELOCITY_EPS","OS","SLOPE_FACTOR","decay","rubberBandEffect","animation","now","lastTimestamp","startTimestamp","current","initialVelocity","deltaTime","Math","min","clampIndex","derivative","clamp","springActive","v","exp","abs","validateConfig","Array","isArray","Error","length","onStart","value","onFrame"],"sources":["decay.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport {\n Animation,\n AnimationCallback,\n AnimationObject,\n AnimatableValue,\n Timestamp,\n} from '../commonTypes';\nimport { Platform } from 'react-native';\n\ninterface DecayConfig {\n deceleration?: number;\n velocityFactor?: number;\n clamp?: number[];\n velocity?: number;\n}\n\ninterface DefaultDecayConfig {\n deceleration: number;\n velocityFactor: number;\n clamp?: number[];\n velocity: number;\n rubberBandEffect?: boolean;\n rubberBandFactor: number;\n}\n\nexport interface DecayAnimation extends Animation<DecayAnimation> {\n lastTimestamp: Timestamp;\n startTimestamp: Timestamp;\n initialVelocity: number;\n velocity: number;\n current: AnimatableValue;\n}\n\nexport interface InnerDecayAnimation\n extends Omit<DecayAnimation, 'current'>,\n AnimationObject {\n current: number;\n}\n\nexport function withDecay(\n userConfig: DecayConfig,\n callback?: AnimationCallback\n): Animation<DecayAnimation> {\n 'worklet';\n\n return defineAnimation<DecayAnimation>(0, () => {\n 'worklet';\n const config: DefaultDecayConfig = {\n deceleration: 0.998,\n velocityFactor: 1,\n velocity: 0,\n rubberBandFactor: 0.6,\n };\n if (userConfig) {\n Object.keys(userConfig).forEach(\n (key) =>\n ((config as any)[key] = userConfig[key as keyof typeof userConfig])\n );\n }\n\n const VELOCITY_EPS = Platform.OS !== 'web' ? 1 : 1 / 20;\n const SLOPE_FACTOR = 0.1;\n\n // @piaskowyk: Velocity is expressed in pixels per second\n // but pixels on Web are handled differently than on native\n if (Platform.OS === 'web') {\n config.velocity *= 1000;\n }\n\n let decay: (animation: InnerDecayAnimation, now: number) => boolean;\n\n if (config.rubberBandEffect) {\n decay = (animation: InnerDecayAnimation, now: number): boolean => {\n const {\n lastTimestamp,\n startTimestamp,\n current,\n initialVelocity,\n velocity,\n } = animation;\n\n const deltaTime = Math.min(now - lastTimestamp, 64);\n const clampIndex = initialVelocity > 0 ? 1 : 0;\n let derivative = 0;\n if (current < config.clamp![0] || current > config.clamp![1]) {\n derivative = current - config.clamp![clampIndex];\n }\n\n if (derivative !== 0) {\n animation.springActive = true;\n } else if (derivative === 0 && animation.springActive) {\n animation.current = config.clamp![clampIndex];\n return true;\n }\n\n const v =\n velocity *\n Math.exp(\n -(1 - config.deceleration) * (now - startTimestamp) * SLOPE_FACTOR\n ) -\n derivative * config.rubberBandFactor;\n\n animation.current =\n current + (v * config.velocityFactor * deltaTime) / 1000;\n animation.velocity = v;\n animation.lastTimestamp = now;\n return false;\n };\n } else {\n decay = (animation: InnerDecayAnimation, now: number): boolean => {\n const {\n lastTimestamp,\n startTimestamp,\n initialVelocity,\n current,\n velocity,\n } = animation;\n\n const deltaTime = Math.min(now - lastTimestamp, 64);\n const v =\n velocity *\n Math.exp(\n -(1 - config.deceleration) * (now - startTimestamp) * SLOPE_FACTOR\n );\n animation.current =\n current + (v * config.velocityFactor * deltaTime) / 1000;\n animation.velocity = v;\n animation.lastTimestamp = now;\n\n if (config.clamp) {\n if (initialVelocity < 0 && animation.current <= config.clamp[0]) {\n animation.current = config.clamp[0];\n return true;\n } else if (\n initialVelocity > 0 &&\n animation.current >= config.clamp[1]\n ) {\n animation.current = config.clamp[1];\n return true;\n }\n }\n\n return Math.abs(v) < VELOCITY_EPS;\n };\n }\n\n function validateConfig(): void {\n if (config.clamp) {\n if (!Array.isArray(config.clamp)) {\n throw Error(\n `config.clamp must be an array but is ${typeof config.clamp}`\n );\n }\n if (config.clamp.length !== 2) {\n throw Error(\n `clamp array must contain 2 items but is given ${config.clamp.length}`\n );\n }\n }\n if (config.velocityFactor <= 0) {\n throw Error(\n `config.velocityFactor must be greather then 0 but is ${config.velocityFactor}`\n );\n }\n if (config.rubberBandEffect && !config.clamp) {\n throw Error(\n 'You need to set `clamp` property when using `rubberBandEffect`.'\n );\n }\n }\n\n function onStart(\n animation: DecayAnimation,\n value: number,\n now: Timestamp\n ): void {\n animation.current = value;\n animation.lastTimestamp = now;\n animation.startTimestamp = now;\n animation.initialVelocity = config.velocity;\n validateConfig();\n }\n\n return {\n onFrame: decay,\n onStart,\n callback,\n velocity: config.velocity ?? 0,\n initialVelocity: 0,\n current: 0,\n lastTimestamp: 0,\n startTimestamp: 0,\n } as DecayAnimation;\n });\n}\n"],"mappings":"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"}
@@ -6,54 +6,45 @@ export function withDelay(delayMs, _nextAnimation) {
6
6
  'worklet';
7
7
 
8
8
  const nextAnimation = typeof _nextAnimation === 'function' ? _nextAnimation() : _nextAnimation;
9
-
10
9
  function delay(animation, now) {
11
10
  const {
12
11
  startTime,
13
12
  started,
14
13
  previousAnimation
15
14
  } = animation;
16
-
17
15
  if (now - startTime > delayMs) {
18
16
  if (!started) {
19
17
  nextAnimation.onStart(nextAnimation, animation.current, now, previousAnimation);
20
18
  animation.previousAnimation = null;
21
19
  animation.started = true;
22
20
  }
23
-
24
21
  const finished = nextAnimation.onFrame(nextAnimation, now);
25
22
  animation.current = nextAnimation.current;
26
23
  return finished;
27
24
  } else if (previousAnimation) {
28
25
  const finished = previousAnimation.finished || previousAnimation.onFrame(previousAnimation, now);
29
26
  animation.current = previousAnimation.current;
30
-
31
27
  if (finished) {
32
28
  animation.previousAnimation = null;
33
29
  }
34
30
  }
35
-
36
31
  return false;
37
32
  }
38
-
39
33
  function onStart(animation, value, now, previousAnimation) {
40
34
  animation.startTime = now;
41
35
  animation.started = false;
42
36
  animation.current = value;
43
-
44
37
  if (previousAnimation === animation) {
45
38
  animation.previousAnimation = previousAnimation.previousAnimation;
46
39
  } else {
47
40
  animation.previousAnimation = previousAnimation;
48
41
  }
49
42
  }
50
-
51
43
  const callback = finished => {
52
44
  if (nextAnimation.callback) {
53
45
  nextAnimation.callback(finished);
54
46
  }
55
47
  };
56
-
57
48
  return {
58
49
  isHigherOrder: true,
59
50
  onFrame: delay,
@@ -1 +1 @@
1
- {"version":3,"names":["defineAnimation","withDelay","delayMs","_nextAnimation","nextAnimation","delay","animation","now","startTime","started","previousAnimation","onStart","current","finished","onFrame","value","callback","isHigherOrder"],"sources":["delay.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport { Animation, Timestamp, AnimatableValue } from '../commonTypes';\nimport { NextAnimation, DelayAnimation } from './commonTypes';\n\nexport function withDelay(\n delayMs: number,\n _nextAnimation: NextAnimation<DelayAnimation>\n): Animation<DelayAnimation> {\n 'worklet';\n return defineAnimation<DelayAnimation>(_nextAnimation, () => {\n 'worklet';\n const nextAnimation =\n typeof _nextAnimation === 'function' ? _nextAnimation() : _nextAnimation;\n\n function delay(animation: DelayAnimation, now: Timestamp): boolean {\n const { startTime, started, previousAnimation } = animation;\n\n if (now - startTime > delayMs) {\n if (!started) {\n nextAnimation.onStart(\n nextAnimation,\n animation.current,\n now,\n previousAnimation as DelayAnimation\n );\n animation.previousAnimation = null;\n animation.started = true;\n }\n const finished = nextAnimation.onFrame(nextAnimation, now);\n animation.current = nextAnimation.current;\n return finished;\n } else if (previousAnimation) {\n const finished =\n previousAnimation.finished ||\n previousAnimation.onFrame(previousAnimation, now);\n animation.current = previousAnimation.current;\n if (finished) {\n animation.previousAnimation = null;\n }\n }\n return false;\n }\n\n function onStart(\n animation: DelayAnimation,\n value: AnimatableValue,\n now: Timestamp,\n previousAnimation: DelayAnimation\n ): void {\n animation.startTime = now;\n animation.started = false;\n animation.current = value;\n if (previousAnimation === animation) {\n animation.previousAnimation = previousAnimation.previousAnimation;\n } else {\n animation.previousAnimation = previousAnimation;\n }\n }\n\n const callback = (finished?: boolean): void => {\n if (nextAnimation.callback) {\n nextAnimation.callback(finished);\n }\n };\n\n return {\n isHigherOrder: true,\n onFrame: delay,\n onStart,\n current: nextAnimation.current,\n callback,\n previousAnimation: null,\n startTime: 0,\n started: false,\n };\n });\n}\n"],"mappings":"AAAA,SAASA,eAAT,QAAgC,QAAhC;AAIA,OAAO,SAASC,SAAT,CACLC,OADK,EAELC,cAFK,EAGsB;EAC3B;;EACA,OAAOH,eAAe,CAAiBG,cAAjB,EAAiC,MAAM;IAC3D;;IACA,MAAMC,aAAa,GACjB,OAAOD,cAAP,KAA0B,UAA1B,GAAuCA,cAAc,EAArD,GAA0DA,cAD5D;;IAGA,SAASE,KAAT,CAAeC,SAAf,EAA0CC,GAA1C,EAAmE;MACjE,MAAM;QAAEC,SAAF;QAAaC,OAAb;QAAsBC;MAAtB,IAA4CJ,SAAlD;;MAEA,IAAIC,GAAG,GAAGC,SAAN,GAAkBN,OAAtB,EAA+B;QAC7B,IAAI,CAACO,OAAL,EAAc;UACZL,aAAa,CAACO,OAAd,CACEP,aADF,EAEEE,SAAS,CAACM,OAFZ,EAGEL,GAHF,EAIEG,iBAJF;UAMAJ,SAAS,CAACI,iBAAV,GAA8B,IAA9B;UACAJ,SAAS,CAACG,OAAV,GAAoB,IAApB;QACD;;QACD,MAAMI,QAAQ,GAAGT,aAAa,CAACU,OAAd,CAAsBV,aAAtB,EAAqCG,GAArC,CAAjB;QACAD,SAAS,CAACM,OAAV,GAAoBR,aAAa,CAACQ,OAAlC;QACA,OAAOC,QAAP;MACD,CAdD,MAcO,IAAIH,iBAAJ,EAAuB;QAC5B,MAAMG,QAAQ,GACZH,iBAAiB,CAACG,QAAlB,IACAH,iBAAiB,CAACI,OAAlB,CAA0BJ,iBAA1B,EAA6CH,GAA7C,CAFF;QAGAD,SAAS,CAACM,OAAV,GAAoBF,iBAAiB,CAACE,OAAtC;;QACA,IAAIC,QAAJ,EAAc;UACZP,SAAS,CAACI,iBAAV,GAA8B,IAA9B;QACD;MACF;;MACD,OAAO,KAAP;IACD;;IAED,SAASC,OAAT,CACEL,SADF,EAEES,KAFF,EAGER,GAHF,EAIEG,iBAJF,EAKQ;MACNJ,SAAS,CAACE,SAAV,GAAsBD,GAAtB;MACAD,SAAS,CAACG,OAAV,GAAoB,KAApB;MACAH,SAAS,CAACM,OAAV,GAAoBG,KAApB;;MACA,IAAIL,iBAAiB,KAAKJ,SAA1B,EAAqC;QACnCA,SAAS,CAACI,iBAAV,GAA8BA,iBAAiB,CAACA,iBAAhD;MACD,CAFD,MAEO;QACLJ,SAAS,CAACI,iBAAV,GAA8BA,iBAA9B;MACD;IACF;;IAED,MAAMM,QAAQ,GAAIH,QAAD,IAA8B;MAC7C,IAAIT,aAAa,CAACY,QAAlB,EAA4B;QAC1BZ,aAAa,CAACY,QAAd,CAAuBH,QAAvB;MACD;IACF,CAJD;;IAMA,OAAO;MACLI,aAAa,EAAE,IADV;MAELH,OAAO,EAAET,KAFJ;MAGLM,OAHK;MAILC,OAAO,EAAER,aAAa,CAACQ,OAJlB;MAKLI,QALK;MAMLN,iBAAiB,EAAE,IANd;MAOLF,SAAS,EAAE,CAPN;MAQLC,OAAO,EAAE;IARJ,CAAP;EAUD,CAlEqB,CAAtB;AAmED"}
1
+ {"version":3,"names":["defineAnimation","withDelay","delayMs","_nextAnimation","nextAnimation","delay","animation","now","startTime","started","previousAnimation","onStart","current","finished","onFrame","value","callback","isHigherOrder"],"sources":["delay.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport { Animation, Timestamp, AnimatableValue } from '../commonTypes';\nimport { NextAnimation, DelayAnimation } from './commonTypes';\n\nexport function withDelay(\n delayMs: number,\n _nextAnimation: NextAnimation<DelayAnimation>\n): Animation<DelayAnimation> {\n 'worklet';\n return defineAnimation<DelayAnimation>(_nextAnimation, () => {\n 'worklet';\n const nextAnimation =\n typeof _nextAnimation === 'function' ? _nextAnimation() : _nextAnimation;\n\n function delay(animation: DelayAnimation, now: Timestamp): boolean {\n const { startTime, started, previousAnimation } = animation;\n\n if (now - startTime > delayMs) {\n if (!started) {\n nextAnimation.onStart(\n nextAnimation,\n animation.current,\n now,\n previousAnimation as DelayAnimation\n );\n animation.previousAnimation = null;\n animation.started = true;\n }\n const finished = nextAnimation.onFrame(nextAnimation, now);\n animation.current = nextAnimation.current;\n return finished;\n } else if (previousAnimation) {\n const finished =\n previousAnimation.finished ||\n previousAnimation.onFrame(previousAnimation, now);\n animation.current = previousAnimation.current;\n if (finished) {\n animation.previousAnimation = null;\n }\n }\n return false;\n }\n\n function onStart(\n animation: DelayAnimation,\n value: AnimatableValue,\n now: Timestamp,\n previousAnimation: DelayAnimation\n ): void {\n animation.startTime = now;\n animation.started = false;\n animation.current = value;\n if (previousAnimation === animation) {\n animation.previousAnimation = previousAnimation.previousAnimation;\n } else {\n animation.previousAnimation = previousAnimation;\n }\n }\n\n const callback = (finished?: boolean): void => {\n if (nextAnimation.callback) {\n nextAnimation.callback(finished);\n }\n };\n\n return {\n isHigherOrder: true,\n onFrame: delay,\n onStart,\n current: nextAnimation.current,\n callback,\n previousAnimation: null,\n startTime: 0,\n started: false,\n };\n });\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,QAAQ;AAIxC,OAAO,SAASC,SAASA,CACvBC,OAAe,EACfC,cAA6C,EAClB;EAC3B,SAAS;;EACT,OAAOH,eAAe,CAAiBG,cAAc,EAAE,MAAM;IAC3D,SAAS;;IACT,MAAMC,aAAa,GACjB,OAAOD,cAAc,KAAK,UAAU,GAAGA,cAAc,EAAE,GAAGA,cAAc;IAE1E,SAASE,KAAKA,CAACC,SAAyB,EAAEC,GAAc,EAAW;MACjE,MAAM;QAAEC,SAAS;QAAEC,OAAO;QAAEC;MAAkB,CAAC,GAAGJ,SAAS;MAE3D,IAAIC,GAAG,GAAGC,SAAS,GAAGN,OAAO,EAAE;QAC7B,IAAI,CAACO,OAAO,EAAE;UACZL,aAAa,CAACO,OAAO,CACnBP,aAAa,EACbE,SAAS,CAACM,OAAO,EACjBL,GAAG,EACHG,iBAAiB,CAClB;UACDJ,SAAS,CAACI,iBAAiB,GAAG,IAAI;UAClCJ,SAAS,CAACG,OAAO,GAAG,IAAI;QAC1B;QACA,MAAMI,QAAQ,GAAGT,aAAa,CAACU,OAAO,CAACV,aAAa,EAAEG,GAAG,CAAC;QAC1DD,SAAS,CAACM,OAAO,GAAGR,aAAa,CAACQ,OAAO;QACzC,OAAOC,QAAQ;MACjB,CAAC,MAAM,IAAIH,iBAAiB,EAAE;QAC5B,MAAMG,QAAQ,GACZH,iBAAiB,CAACG,QAAQ,IAC1BH,iBAAiB,CAACI,OAAO,CAACJ,iBAAiB,EAAEH,GAAG,CAAC;QACnDD,SAAS,CAACM,OAAO,GAAGF,iBAAiB,CAACE,OAAO;QAC7C,IAAIC,QAAQ,EAAE;UACZP,SAAS,CAACI,iBAAiB,GAAG,IAAI;QACpC;MACF;MACA,OAAO,KAAK;IACd;IAEA,SAASC,OAAOA,CACdL,SAAyB,EACzBS,KAAsB,EACtBR,GAAc,EACdG,iBAAiC,EAC3B;MACNJ,SAAS,CAACE,SAAS,GAAGD,GAAG;MACzBD,SAAS,CAACG,OAAO,GAAG,KAAK;MACzBH,SAAS,CAACM,OAAO,GAAGG,KAAK;MACzB,IAAIL,iBAAiB,KAAKJ,SAAS,EAAE;QACnCA,SAAS,CAACI,iBAAiB,GAAGA,iBAAiB,CAACA,iBAAiB;MACnE,CAAC,MAAM;QACLJ,SAAS,CAACI,iBAAiB,GAAGA,iBAAiB;MACjD;IACF;IAEA,MAAMM,QAAQ,GAAIH,QAAkB,IAAW;MAC7C,IAAIT,aAAa,CAACY,QAAQ,EAAE;QAC1BZ,aAAa,CAACY,QAAQ,CAACH,QAAQ,CAAC;MAClC;IACF,CAAC;IAED,OAAO;MACLI,aAAa,EAAE,IAAI;MACnBH,OAAO,EAAET,KAAK;MACdM,OAAO;MACPC,OAAO,EAAER,aAAa,CAACQ,OAAO;MAC9BI,QAAQ;MACRN,iBAAiB,EAAE,IAAI;MACvBF,SAAS,EAAE,CAAC;MACZC,OAAO,EAAE;IACX,CAAC;EACH,CAAC,CAAC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"names":["cancelAnimation","defineAnimation","initialUpdaterRun","withTiming","withSpring","withDecay","withDelay","withRepeat","withSequence","withStyleAnimation"],"sources":["index.ts"],"sourcesContent":["export type {\n HigherOrderAnimation,\n NextAnimation,\n DelayAnimation,\n RepeatAnimation,\n SequenceAnimation,\n StyleLayoutAnimation,\n} from './commonTypes';\nexport { cancelAnimation, defineAnimation, initialUpdaterRun } from './util';\nexport { withTiming } from './timing';\nexport type { TimingAnimation } from './timing';\nexport { withSpring } from './spring';\nexport type { SpringAnimation } from './spring';\nexport { withDecay } from './decay';\nexport type { DecayAnimation } from './decay';\nexport { withDelay } from './delay';\nexport { withRepeat } from './repeat';\nexport { withSequence } from './sequence';\nexport { withStyleAnimation } from './styleAnimation';\n"],"mappings":"AAQA,SAASA,eAAT,EAA0BC,eAA1B,EAA2CC,iBAA3C,QAAoE,QAApE;AACA,SAASC,UAAT,QAA2B,UAA3B;AAEA,SAASC,UAAT,QAA2B,UAA3B;AAEA,SAASC,SAAT,QAA0B,SAA1B;AAEA,SAASC,SAAT,QAA0B,SAA1B;AACA,SAASC,UAAT,QAA2B,UAA3B;AACA,SAASC,YAAT,QAA6B,YAA7B;AACA,SAASC,kBAAT,QAAmC,kBAAnC"}
1
+ {"version":3,"names":["cancelAnimation","defineAnimation","initialUpdaterRun","withTiming","withSpring","withDecay","withDelay","withRepeat","withSequence","withStyleAnimation"],"sources":["index.ts"],"sourcesContent":["export type {\n HigherOrderAnimation,\n NextAnimation,\n DelayAnimation,\n RepeatAnimation,\n SequenceAnimation,\n StyleLayoutAnimation,\n} from './commonTypes';\nexport { cancelAnimation, defineAnimation, initialUpdaterRun } from './util';\nexport { withTiming } from './timing';\nexport type { TimingAnimation } from './timing';\nexport { withSpring } from './spring';\nexport type { SpringAnimation } from './spring';\nexport { withDecay } from './decay';\nexport type { DecayAnimation } from './decay';\nexport { withDelay } from './delay';\nexport { withRepeat } from './repeat';\nexport { withSequence } from './sequence';\nexport { withStyleAnimation } from './styleAnimation';\n"],"mappings":"AAQA,SAASA,eAAe,EAAEC,eAAe,EAAEC,iBAAiB,QAAQ,QAAQ;AAC5E,SAASC,UAAU,QAAQ,UAAU;AAErC,SAASC,UAAU,QAAQ,UAAU;AAErC,SAASC,SAAS,QAAQ,SAAS;AAEnC,SAASC,SAAS,QAAQ,SAAS;AACnC,SAASC,UAAU,QAAQ,UAAU;AACrC,SAASC,YAAY,QAAQ,YAAY;AACzC,SAASC,kBAAkB,QAAQ,kBAAkB"}
@@ -9,49 +9,36 @@ export function withRepeat(_nextAnimation) {
9
9
  'worklet';
10
10
 
11
11
  const nextAnimation = typeof _nextAnimation === 'function' ? _nextAnimation() : _nextAnimation;
12
-
13
12
  function repeat(animation, now) {
14
13
  const finished = nextAnimation.onFrame(nextAnimation, now);
15
14
  animation.current = nextAnimation.current;
16
-
17
15
  if (finished) {
18
- animation.reps += 1; // call inner animation's callback on every repetition
16
+ animation.reps += 1;
17
+ // call inner animation's callback on every repetition
19
18
  // as the second argument the animation's current value is passed
20
-
21
19
  if (nextAnimation.callback) {
22
- nextAnimation.callback(true
23
- /* finished */
24
- , animation.current);
20
+ nextAnimation.callback(true /* finished */, animation.current);
25
21
  }
26
-
27
22
  if (numberOfReps > 0 && animation.reps >= numberOfReps) {
28
23
  return true;
29
24
  }
30
-
31
25
  const startValue = reverse ? nextAnimation.current : animation.startValue;
32
-
33
26
  if (reverse) {
34
27
  nextAnimation.toValue = animation.startValue;
35
28
  animation.startValue = startValue;
36
29
  }
37
-
38
30
  nextAnimation.onStart(nextAnimation, startValue, now, nextAnimation.previousAnimation);
39
31
  return false;
40
32
  }
41
-
42
33
  return false;
43
34
  }
44
-
45
35
  const repCallback = finished => {
46
36
  if (callback) {
47
37
  callback(finished);
48
- } // when cancelled call inner animation's callback
49
-
50
-
38
+ }
39
+ // when cancelled call inner animation's callback
51
40
  if (!finished && nextAnimation.callback) {
52
- nextAnimation.callback(false
53
- /* finished */
54
- );
41
+ nextAnimation.callback(false /* finished */);
55
42
  }
56
43
  };
57
44
 
@@ -60,7 +47,6 @@ export function withRepeat(_nextAnimation) {
60
47
  animation.reps = 0;
61
48
  nextAnimation.onStart(nextAnimation, value, now, previousAnimation);
62
49
  }
63
-
64
50
  return {
65
51
  isHigherOrder: true,
66
52
  onFrame: repeat,
@@ -1 +1 @@
1
- {"version":3,"names":["defineAnimation","withRepeat","_nextAnimation","numberOfReps","reverse","callback","nextAnimation","repeat","animation","now","finished","onFrame","current","reps","startValue","toValue","onStart","previousAnimation","repCallback","value","isHigherOrder"],"sources":["repeat.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport {\n Animation,\n AnimationCallback,\n AnimatableValue,\n Timestamp,\n} from '../commonTypes';\nimport { NextAnimation, RepeatAnimation } from './commonTypes';\n\nexport interface InnerRepeatAnimation\n extends Omit<RepeatAnimation, 'toValue' | 'startValue'> {\n toValue: number;\n startValue: number;\n}\n\nexport function withRepeat(\n _nextAnimation: NextAnimation<RepeatAnimation>,\n numberOfReps = 2,\n reverse = false,\n callback?: AnimationCallback\n): Animation<RepeatAnimation> {\n 'worklet';\n\n return defineAnimation<RepeatAnimation>(_nextAnimation, () => {\n 'worklet';\n\n const nextAnimation: RepeatAnimation =\n typeof _nextAnimation === 'function' ? _nextAnimation() : _nextAnimation;\n\n function repeat(animation: InnerRepeatAnimation, now: Timestamp): boolean {\n const finished = nextAnimation.onFrame(nextAnimation, now);\n animation.current = nextAnimation.current;\n if (finished) {\n animation.reps += 1;\n // call inner animation's callback on every repetition\n // as the second argument the animation's current value is passed\n if (nextAnimation.callback) {\n nextAnimation.callback(true /* finished */, animation.current);\n }\n if (numberOfReps > 0 && animation.reps >= numberOfReps) {\n return true;\n }\n\n const startValue = reverse\n ? (nextAnimation.current as number)\n : animation.startValue;\n if (reverse) {\n nextAnimation.toValue = animation.startValue;\n animation.startValue = startValue;\n }\n nextAnimation.onStart(\n nextAnimation,\n startValue,\n now,\n nextAnimation.previousAnimation as RepeatAnimation\n );\n return false;\n }\n return false;\n }\n\n const repCallback = (finished: boolean): void => {\n if (callback) {\n callback(finished);\n }\n // when cancelled call inner animation's callback\n if (!finished && nextAnimation.callback) {\n nextAnimation.callback(false /* finished */);\n }\n };\n\n function onStart(\n animation: RepeatAnimation,\n value: AnimatableValue,\n now: Timestamp,\n previousAnimation: RepeatAnimation\n ): void {\n animation.startValue = value;\n animation.reps = 0;\n nextAnimation.onStart(nextAnimation, value, now, previousAnimation);\n }\n\n return {\n isHigherOrder: true,\n onFrame: repeat,\n onStart,\n reps: 0,\n current: nextAnimation.current,\n callback: repCallback,\n startValue: 0,\n } as RepeatAnimation;\n });\n}\n"],"mappings":"AAAA,SAASA,eAAT,QAAgC,QAAhC;AAeA,OAAO,SAASC,UAAT,CACLC,cADK,EAKuB;EAC5B;;EAD4B,IAH5BC,YAG4B,uEAHb,CAGa;EAAA,IAF5BC,OAE4B,uEAFlB,KAEkB;EAAA,IAD5BC,QAC4B;EAG5B,OAAOL,eAAe,CAAkBE,cAAlB,EAAkC,MAAM;IAC5D;;IAEA,MAAMI,aAA8B,GAClC,OAAOJ,cAAP,KAA0B,UAA1B,GAAuCA,cAAc,EAArD,GAA0DA,cAD5D;;IAGA,SAASK,MAAT,CAAgBC,SAAhB,EAAiDC,GAAjD,EAA0E;MACxE,MAAMC,QAAQ,GAAGJ,aAAa,CAACK,OAAd,CAAsBL,aAAtB,EAAqCG,GAArC,CAAjB;MACAD,SAAS,CAACI,OAAV,GAAoBN,aAAa,CAACM,OAAlC;;MACA,IAAIF,QAAJ,EAAc;QACZF,SAAS,CAACK,IAAV,IAAkB,CAAlB,CADY,CAEZ;QACA;;QACA,IAAIP,aAAa,CAACD,QAAlB,EAA4B;UAC1BC,aAAa,CAACD,QAAd,CAAuB;UAAK;UAA5B,EAA4CG,SAAS,CAACI,OAAtD;QACD;;QACD,IAAIT,YAAY,GAAG,CAAf,IAAoBK,SAAS,CAACK,IAAV,IAAkBV,YAA1C,EAAwD;UACtD,OAAO,IAAP;QACD;;QAED,MAAMW,UAAU,GAAGV,OAAO,GACrBE,aAAa,CAACM,OADO,GAEtBJ,SAAS,CAACM,UAFd;;QAGA,IAAIV,OAAJ,EAAa;UACXE,aAAa,CAACS,OAAd,GAAwBP,SAAS,CAACM,UAAlC;UACAN,SAAS,CAACM,UAAV,GAAuBA,UAAvB;QACD;;QACDR,aAAa,CAACU,OAAd,CACEV,aADF,EAEEQ,UAFF,EAGEL,GAHF,EAIEH,aAAa,CAACW,iBAJhB;QAMA,OAAO,KAAP;MACD;;MACD,OAAO,KAAP;IACD;;IAED,MAAMC,WAAW,GAAIR,QAAD,IAA6B;MAC/C,IAAIL,QAAJ,EAAc;QACZA,QAAQ,CAACK,QAAD,CAAR;MACD,CAH8C,CAI/C;;;MACA,IAAI,CAACA,QAAD,IAAaJ,aAAa,CAACD,QAA/B,EAAyC;QACvCC,aAAa,CAACD,QAAd,CAAuB;QAAM;QAA7B;MACD;IACF,CARD;;IAUA,SAASW,OAAT,CACER,SADF,EAEEW,KAFF,EAGEV,GAHF,EAIEQ,iBAJF,EAKQ;MACNT,SAAS,CAACM,UAAV,GAAuBK,KAAvB;MACAX,SAAS,CAACK,IAAV,GAAiB,CAAjB;MACAP,aAAa,CAACU,OAAd,CAAsBV,aAAtB,EAAqCa,KAArC,EAA4CV,GAA5C,EAAiDQ,iBAAjD;IACD;;IAED,OAAO;MACLG,aAAa,EAAE,IADV;MAELT,OAAO,EAAEJ,MAFJ;MAGLS,OAHK;MAILH,IAAI,EAAE,CAJD;MAKLD,OAAO,EAAEN,aAAa,CAACM,OALlB;MAMLP,QAAQ,EAAEa,WANL;MAOLJ,UAAU,EAAE;IAPP,CAAP;EASD,CApEqB,CAAtB;AAqED"}
1
+ {"version":3,"names":["defineAnimation","withRepeat","_nextAnimation","numberOfReps","arguments","length","undefined","reverse","callback","nextAnimation","repeat","animation","now","finished","onFrame","current","reps","startValue","toValue","onStart","previousAnimation","repCallback","value","isHigherOrder"],"sources":["repeat.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport {\n Animation,\n AnimationCallback,\n AnimatableValue,\n Timestamp,\n} from '../commonTypes';\nimport { NextAnimation, RepeatAnimation } from './commonTypes';\n\nexport interface InnerRepeatAnimation\n extends Omit<RepeatAnimation, 'toValue' | 'startValue'> {\n toValue: number;\n startValue: number;\n}\n\nexport function withRepeat(\n _nextAnimation: NextAnimation<RepeatAnimation>,\n numberOfReps = 2,\n reverse = false,\n callback?: AnimationCallback\n): Animation<RepeatAnimation> {\n 'worklet';\n\n return defineAnimation<RepeatAnimation>(_nextAnimation, () => {\n 'worklet';\n\n const nextAnimation: RepeatAnimation =\n typeof _nextAnimation === 'function' ? _nextAnimation() : _nextAnimation;\n\n function repeat(animation: InnerRepeatAnimation, now: Timestamp): boolean {\n const finished = nextAnimation.onFrame(nextAnimation, now);\n animation.current = nextAnimation.current;\n if (finished) {\n animation.reps += 1;\n // call inner animation's callback on every repetition\n // as the second argument the animation's current value is passed\n if (nextAnimation.callback) {\n nextAnimation.callback(true /* finished */, animation.current);\n }\n if (numberOfReps > 0 && animation.reps >= numberOfReps) {\n return true;\n }\n\n const startValue = reverse\n ? (nextAnimation.current as number)\n : animation.startValue;\n if (reverse) {\n nextAnimation.toValue = animation.startValue;\n animation.startValue = startValue;\n }\n nextAnimation.onStart(\n nextAnimation,\n startValue,\n now,\n nextAnimation.previousAnimation as RepeatAnimation\n );\n return false;\n }\n return false;\n }\n\n const repCallback = (finished: boolean): void => {\n if (callback) {\n callback(finished);\n }\n // when cancelled call inner animation's callback\n if (!finished && nextAnimation.callback) {\n nextAnimation.callback(false /* finished */);\n }\n };\n\n function onStart(\n animation: RepeatAnimation,\n value: AnimatableValue,\n now: Timestamp,\n previousAnimation: RepeatAnimation\n ): void {\n animation.startValue = value;\n animation.reps = 0;\n nextAnimation.onStart(nextAnimation, value, now, previousAnimation);\n }\n\n return {\n isHigherOrder: true,\n onFrame: repeat,\n onStart,\n reps: 0,\n current: nextAnimation.current,\n callback: repCallback,\n startValue: 0,\n } as RepeatAnimation;\n });\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,QAAQ;AAexC,OAAO,SAASC,UAAUA,CACxBC,cAA8C,EAIlB;EAC5B,SAAS;;EAAC,IAJVC,YAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAAA,IAChBG,OAAO,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACfI,QAA4B,GAAAJ,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAI5B,OAAON,eAAe,CAAkBE,cAAc,EAAE,MAAM;IAC5D,SAAS;;IAET,MAAMO,aAA8B,GAClC,OAAOP,cAAc,KAAK,UAAU,GAAGA,cAAc,EAAE,GAAGA,cAAc;IAE1E,SAASQ,MAAMA,CAACC,SAA+B,EAAEC,GAAc,EAAW;MACxE,MAAMC,QAAQ,GAAGJ,aAAa,CAACK,OAAO,CAACL,aAAa,EAAEG,GAAG,CAAC;MAC1DD,SAAS,CAACI,OAAO,GAAGN,aAAa,CAACM,OAAO;MACzC,IAAIF,QAAQ,EAAE;QACZF,SAAS,CAACK,IAAI,IAAI,CAAC;QACnB;QACA;QACA,IAAIP,aAAa,CAACD,QAAQ,EAAE;UAC1BC,aAAa,CAACD,QAAQ,CAAC,IAAI,CAAC,gBAAgBG,SAAS,CAACI,OAAO,CAAC;QAChE;QACA,IAAIZ,YAAY,GAAG,CAAC,IAAIQ,SAAS,CAACK,IAAI,IAAIb,YAAY,EAAE;UACtD,OAAO,IAAI;QACb;QAEA,MAAMc,UAAU,GAAGV,OAAO,GACrBE,aAAa,CAACM,OAAO,GACtBJ,SAAS,CAACM,UAAU;QACxB,IAAIV,OAAO,EAAE;UACXE,aAAa,CAACS,OAAO,GAAGP,SAAS,CAACM,UAAU;UAC5CN,SAAS,CAACM,UAAU,GAAGA,UAAU;QACnC;QACAR,aAAa,CAACU,OAAO,CACnBV,aAAa,EACbQ,UAAU,EACVL,GAAG,EACHH,aAAa,CAACW,iBAAiB,CAChC;QACD,OAAO,KAAK;MACd;MACA,OAAO,KAAK;IACd;IAEA,MAAMC,WAAW,GAAIR,QAAiB,IAAW;MAC/C,IAAIL,QAAQ,EAAE;QACZA,QAAQ,CAACK,QAAQ,CAAC;MACpB;MACA;MACA,IAAI,CAACA,QAAQ,IAAIJ,aAAa,CAACD,QAAQ,EAAE;QACvCC,aAAa,CAACD,QAAQ,CAAC,KAAK,CAAC,eAAe;MAC9C;IACF,CAAC;;IAED,SAASW,OAAOA,CACdR,SAA0B,EAC1BW,KAAsB,EACtBV,GAAc,EACdQ,iBAAkC,EAC5B;MACNT,SAAS,CAACM,UAAU,GAAGK,KAAK;MAC5BX,SAAS,CAACK,IAAI,GAAG,CAAC;MAClBP,aAAa,CAACU,OAAO,CAACV,aAAa,EAAEa,KAAK,EAAEV,GAAG,EAAEQ,iBAAiB,CAAC;IACrE;IAEA,OAAO;MACLG,aAAa,EAAE,IAAI;MACnBT,OAAO,EAAEJ,MAAM;MACfS,OAAO;MACPH,IAAI,EAAE,CAAC;MACPD,OAAO,EAAEN,aAAa,CAACM,OAAO;MAC9BP,QAAQ,EAAEa,WAAW;MACrBJ,UAAU,EAAE;IACd,CAAC;EACH,CAAC,CAAC;AACJ"}
@@ -5,7 +5,6 @@ export function withSequence() {
5
5
  for (var _len = arguments.length, _animations = new Array(_len), _key = 0; _key < _len; _key++) {
6
6
  _animations[_key] = arguments[_key];
7
7
  }
8
-
9
8
  return defineAnimation(_animations[0], () => {
10
9
  'worklet';
11
10
 
@@ -14,62 +13,48 @@ export function withSequence() {
14
13
  result.finished = false;
15
14
  return result;
16
15
  });
17
-
18
16
  const firstAnimation = animations[0];
19
-
20
17
  const callback = finished => {
21
18
  if (finished) {
22
19
  // we want to call the callback after every single animation
23
20
  // not after all of them
24
21
  return;
25
- } // this is going to be called only if sequence has been cancelled
26
-
27
-
22
+ }
23
+ // this is going to be called only if sequence has been cancelled
28
24
  animations.forEach(animation => {
29
25
  if (typeof animation.callback === 'function' && !animation.finished) {
30
26
  animation.callback(finished);
31
27
  }
32
28
  });
33
29
  };
34
-
35
30
  function sequence(animation, now) {
36
31
  const currentAnim = animations[animation.animationIndex];
37
32
  const finished = currentAnim.onFrame(currentAnim, now);
38
33
  animation.current = currentAnim.current;
39
-
40
34
  if (finished) {
41
35
  // we want to call the callback after every single animation
42
36
  if (currentAnim.callback) {
43
- currentAnim.callback(true
44
- /* finished */
45
- );
37
+ currentAnim.callback(true /* finished */);
46
38
  }
47
39
 
48
40
  currentAnim.finished = true;
49
41
  animation.animationIndex += 1;
50
-
51
42
  if (animation.animationIndex < animations.length) {
52
43
  const nextAnim = animations[animation.animationIndex];
53
44
  nextAnim.onStart(nextAnim, currentAnim.current, now, currentAnim);
54
45
  return false;
55
46
  }
56
-
57
47
  return true;
58
48
  }
59
-
60
49
  return false;
61
50
  }
62
-
63
51
  function onStart(animation, value, now, previousAnimation) {
64
52
  animation.animationIndex = 0;
65
-
66
53
  if (previousAnimation === undefined) {
67
54
  previousAnimation = animations[animations.length - 1];
68
55
  }
69
-
70
56
  firstAnimation.onStart(firstAnimation, value, now, previousAnimation);
71
57
  }
72
-
73
58
  return {
74
59
  isHigherOrder: true,
75
60
  onFrame: sequence,
@@ -1 +1 @@
1
- {"version":3,"names":["defineAnimation","withSequence","_animations","animations","map","a","result","finished","firstAnimation","callback","forEach","animation","sequence","now","currentAnim","animationIndex","onFrame","current","length","nextAnim","onStart","value","previousAnimation","undefined","isHigherOrder"],"sources":["sequence.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport { NextAnimation, SequenceAnimation } from './commonTypes';\nimport {\n Animation,\n AnimatableValue,\n AnimationObject,\n Timestamp,\n} from '../commonTypes';\n\nexport function withSequence(\n ..._animations: NextAnimation<AnimationObject>[]\n): Animation<SequenceAnimation> {\n 'worklet';\n return defineAnimation<SequenceAnimation>(\n _animations[0] as SequenceAnimation,\n () => {\n 'worklet';\n const animations = _animations.map((a) => {\n const result = typeof a === 'function' ? a() : a;\n result.finished = false;\n return result;\n });\n const firstAnimation = animations[0];\n\n const callback = (finished: boolean): void => {\n if (finished) {\n // we want to call the callback after every single animation\n // not after all of them\n return;\n }\n // this is going to be called only if sequence has been cancelled\n animations.forEach((animation) => {\n if (typeof animation.callback === 'function' && !animation.finished) {\n animation.callback(finished);\n }\n });\n };\n\n function sequence(animation: SequenceAnimation, now: Timestamp): boolean {\n const currentAnim = animations[animation.animationIndex];\n const finished = currentAnim.onFrame(currentAnim, now);\n animation.current = currentAnim.current;\n if (finished) {\n // we want to call the callback after every single animation\n if (currentAnim.callback) {\n currentAnim.callback(true /* finished */);\n }\n currentAnim.finished = true;\n animation.animationIndex += 1;\n if (animation.animationIndex < animations.length) {\n const nextAnim = animations[animation.animationIndex];\n nextAnim.onStart(nextAnim, currentAnim.current, now, currentAnim);\n return false;\n }\n return true;\n }\n return false;\n }\n\n function onStart(\n animation: SequenceAnimation,\n value: AnimatableValue,\n now: Timestamp,\n previousAnimation: SequenceAnimation\n ): void {\n animation.animationIndex = 0;\n if (previousAnimation === undefined) {\n previousAnimation = animations[\n animations.length - 1\n ] as SequenceAnimation;\n }\n firstAnimation.onStart(firstAnimation, value, now, previousAnimation);\n }\n\n return {\n isHigherOrder: true,\n onFrame: sequence,\n onStart,\n animationIndex: 0,\n current: firstAnimation.current,\n callback,\n } as SequenceAnimation;\n }\n );\n}\n"],"mappings":"AAAA,SAASA,eAAT,QAAgC,QAAhC;AASA,OAAO,SAASC,YAAT,GAEyB;EAC9B;;EAD8B,kCAD3BC,WAC2B;IAD3BA,WAC2B;EAAA;;EAE9B,OAAOF,eAAe,CACpBE,WAAW,CAAC,CAAD,CADS,EAEpB,MAAM;IACJ;;IACA,MAAMC,UAAU,GAAGD,WAAW,CAACE,GAAZ,CAAiBC,CAAD,IAAO;MACxC,MAAMC,MAAM,GAAG,OAAOD,CAAP,KAAa,UAAb,GAA0BA,CAAC,EAA3B,GAAgCA,CAA/C;MACAC,MAAM,CAACC,QAAP,GAAkB,KAAlB;MACA,OAAOD,MAAP;IACD,CAJkB,CAAnB;;IAKA,MAAME,cAAc,GAAGL,UAAU,CAAC,CAAD,CAAjC;;IAEA,MAAMM,QAAQ,GAAIF,QAAD,IAA6B;MAC5C,IAAIA,QAAJ,EAAc;QACZ;QACA;QACA;MACD,CAL2C,CAM5C;;;MACAJ,UAAU,CAACO,OAAX,CAAoBC,SAAD,IAAe;QAChC,IAAI,OAAOA,SAAS,CAACF,QAAjB,KAA8B,UAA9B,IAA4C,CAACE,SAAS,CAACJ,QAA3D,EAAqE;UACnEI,SAAS,CAACF,QAAV,CAAmBF,QAAnB;QACD;MACF,CAJD;IAKD,CAZD;;IAcA,SAASK,QAAT,CAAkBD,SAAlB,EAAgDE,GAAhD,EAAyE;MACvE,MAAMC,WAAW,GAAGX,UAAU,CAACQ,SAAS,CAACI,cAAX,CAA9B;MACA,MAAMR,QAAQ,GAAGO,WAAW,CAACE,OAAZ,CAAoBF,WAApB,EAAiCD,GAAjC,CAAjB;MACAF,SAAS,CAACM,OAAV,GAAoBH,WAAW,CAACG,OAAhC;;MACA,IAAIV,QAAJ,EAAc;QACZ;QACA,IAAIO,WAAW,CAACL,QAAhB,EAA0B;UACxBK,WAAW,CAACL,QAAZ,CAAqB;UAAK;UAA1B;QACD;;QACDK,WAAW,CAACP,QAAZ,GAAuB,IAAvB;QACAI,SAAS,CAACI,cAAV,IAA4B,CAA5B;;QACA,IAAIJ,SAAS,CAACI,cAAV,GAA2BZ,UAAU,CAACe,MAA1C,EAAkD;UAChD,MAAMC,QAAQ,GAAGhB,UAAU,CAACQ,SAAS,CAACI,cAAX,CAA3B;UACAI,QAAQ,CAACC,OAAT,CAAiBD,QAAjB,EAA2BL,WAAW,CAACG,OAAvC,EAAgDJ,GAAhD,EAAqDC,WAArD;UACA,OAAO,KAAP;QACD;;QACD,OAAO,IAAP;MACD;;MACD,OAAO,KAAP;IACD;;IAED,SAASM,OAAT,CACET,SADF,EAEEU,KAFF,EAGER,GAHF,EAIES,iBAJF,EAKQ;MACNX,SAAS,CAACI,cAAV,GAA2B,CAA3B;;MACA,IAAIO,iBAAiB,KAAKC,SAA1B,EAAqC;QACnCD,iBAAiB,GAAGnB,UAAU,CAC5BA,UAAU,CAACe,MAAX,GAAoB,CADQ,CAA9B;MAGD;;MACDV,cAAc,CAACY,OAAf,CAAuBZ,cAAvB,EAAuCa,KAAvC,EAA8CR,GAA9C,EAAmDS,iBAAnD;IACD;;IAED,OAAO;MACLE,aAAa,EAAE,IADV;MAELR,OAAO,EAAEJ,QAFJ;MAGLQ,OAHK;MAILL,cAAc,EAAE,CAJX;MAKLE,OAAO,EAAET,cAAc,CAACS,OALnB;MAMLR;IANK,CAAP;EAQD,CArEmB,CAAtB;AAuED"}
1
+ {"version":3,"names":["defineAnimation","withSequence","_len","arguments","length","_animations","Array","_key","animations","map","a","result","finished","firstAnimation","callback","forEach","animation","sequence","now","currentAnim","animationIndex","onFrame","current","nextAnim","onStart","value","previousAnimation","undefined","isHigherOrder"],"sources":["sequence.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport { NextAnimation, SequenceAnimation } from './commonTypes';\nimport {\n Animation,\n AnimatableValue,\n AnimationObject,\n Timestamp,\n} from '../commonTypes';\n\nexport function withSequence(\n ..._animations: NextAnimation<AnimationObject>[]\n): Animation<SequenceAnimation> {\n 'worklet';\n return defineAnimation<SequenceAnimation>(\n _animations[0] as SequenceAnimation,\n () => {\n 'worklet';\n const animations = _animations.map((a) => {\n const result = typeof a === 'function' ? a() : a;\n result.finished = false;\n return result;\n });\n const firstAnimation = animations[0];\n\n const callback = (finished: boolean): void => {\n if (finished) {\n // we want to call the callback after every single animation\n // not after all of them\n return;\n }\n // this is going to be called only if sequence has been cancelled\n animations.forEach((animation) => {\n if (typeof animation.callback === 'function' && !animation.finished) {\n animation.callback(finished);\n }\n });\n };\n\n function sequence(animation: SequenceAnimation, now: Timestamp): boolean {\n const currentAnim = animations[animation.animationIndex];\n const finished = currentAnim.onFrame(currentAnim, now);\n animation.current = currentAnim.current;\n if (finished) {\n // we want to call the callback after every single animation\n if (currentAnim.callback) {\n currentAnim.callback(true /* finished */);\n }\n currentAnim.finished = true;\n animation.animationIndex += 1;\n if (animation.animationIndex < animations.length) {\n const nextAnim = animations[animation.animationIndex];\n nextAnim.onStart(nextAnim, currentAnim.current, now, currentAnim);\n return false;\n }\n return true;\n }\n return false;\n }\n\n function onStart(\n animation: SequenceAnimation,\n value: AnimatableValue,\n now: Timestamp,\n previousAnimation: SequenceAnimation\n ): void {\n animation.animationIndex = 0;\n if (previousAnimation === undefined) {\n previousAnimation = animations[\n animations.length - 1\n ] as SequenceAnimation;\n }\n firstAnimation.onStart(firstAnimation, value, now, previousAnimation);\n }\n\n return {\n isHigherOrder: true,\n onFrame: sequence,\n onStart,\n animationIndex: 0,\n current: firstAnimation.current,\n callback,\n } as SequenceAnimation;\n }\n );\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,QAAQ;AASxC,OAAO,SAASC,YAAYA,CAAA,EAEI;EAC9B,SAAS;;EAAC,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAFPC,WAAW,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;IAAXF,WAAW,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;EAAA;EAGd,OAAOP,eAAe,CACpBK,WAAW,CAAC,CAAC,CAAC,EACd,MAAM;IACJ,SAAS;;IACT,MAAMG,UAAU,GAAGH,WAAW,CAACI,GAAG,CAAEC,CAAC,IAAK;MACxC,MAAMC,MAAM,GAAG,OAAOD,CAAC,KAAK,UAAU,GAAGA,CAAC,EAAE,GAAGA,CAAC;MAChDC,MAAM,CAACC,QAAQ,GAAG,KAAK;MACvB,OAAOD,MAAM;IACf,CAAC,CAAC;IACF,MAAME,cAAc,GAAGL,UAAU,CAAC,CAAC,CAAC;IAEpC,MAAMM,QAAQ,GAAIF,QAAiB,IAAW;MAC5C,IAAIA,QAAQ,EAAE;QACZ;QACA;QACA;MACF;MACA;MACAJ,UAAU,CAACO,OAAO,CAAEC,SAAS,IAAK;QAChC,IAAI,OAAOA,SAAS,CAACF,QAAQ,KAAK,UAAU,IAAI,CAACE,SAAS,CAACJ,QAAQ,EAAE;UACnEI,SAAS,CAACF,QAAQ,CAACF,QAAQ,CAAC;QAC9B;MACF,CAAC,CAAC;IACJ,CAAC;IAED,SAASK,QAAQA,CAACD,SAA4B,EAAEE,GAAc,EAAW;MACvE,MAAMC,WAAW,GAAGX,UAAU,CAACQ,SAAS,CAACI,cAAc,CAAC;MACxD,MAAMR,QAAQ,GAAGO,WAAW,CAACE,OAAO,CAACF,WAAW,EAAED,GAAG,CAAC;MACtDF,SAAS,CAACM,OAAO,GAAGH,WAAW,CAACG,OAAO;MACvC,IAAIV,QAAQ,EAAE;QACZ;QACA,IAAIO,WAAW,CAACL,QAAQ,EAAE;UACxBK,WAAW,CAACL,QAAQ,CAAC,IAAI,CAAC,eAAe;QAC3C;;QACAK,WAAW,CAACP,QAAQ,GAAG,IAAI;QAC3BI,SAAS,CAACI,cAAc,IAAI,CAAC;QAC7B,IAAIJ,SAAS,CAACI,cAAc,GAAGZ,UAAU,CAACJ,MAAM,EAAE;UAChD,MAAMmB,QAAQ,GAAGf,UAAU,CAACQ,SAAS,CAACI,cAAc,CAAC;UACrDG,QAAQ,CAACC,OAAO,CAACD,QAAQ,EAAEJ,WAAW,CAACG,OAAO,EAAEJ,GAAG,EAAEC,WAAW,CAAC;UACjE,OAAO,KAAK;QACd;QACA,OAAO,IAAI;MACb;MACA,OAAO,KAAK;IACd;IAEA,SAASK,OAAOA,CACdR,SAA4B,EAC5BS,KAAsB,EACtBP,GAAc,EACdQ,iBAAoC,EAC9B;MACNV,SAAS,CAACI,cAAc,GAAG,CAAC;MAC5B,IAAIM,iBAAiB,KAAKC,SAAS,EAAE;QACnCD,iBAAiB,GAAGlB,UAAU,CAC5BA,UAAU,CAACJ,MAAM,GAAG,CAAC,CACD;MACxB;MACAS,cAAc,CAACW,OAAO,CAACX,cAAc,EAAEY,KAAK,EAAEP,GAAG,EAAEQ,iBAAiB,CAAC;IACvE;IAEA,OAAO;MACLE,aAAa,EAAE,IAAI;MACnBP,OAAO,EAAEJ,QAAQ;MACjBO,OAAO;MACPJ,cAAc,EAAE,CAAC;MACjBE,OAAO,EAAET,cAAc,CAACS,OAAO;MAC/BR;IACF,CAAC;EACH,CAAC,CACF;AACH"}
@@ -3,10 +3,11 @@ export function withSpring(toValue, userConfig, callback) {
3
3
  'worklet';
4
4
 
5
5
  return defineAnimation(toValue, () => {
6
- 'worklet'; // TODO: figure out why we can't use spread or Object.assign here
6
+ 'worklet';
7
+
8
+ // TODO: figure out why we can't use spread or Object.assign here
7
9
  // when user config is "frozen object" we can't enumerate it (perhaps
8
10
  // something is wrong with the object prototype).
9
-
10
11
  const config = {
11
12
  damping: 10,
12
13
  mass: 1,
@@ -16,11 +17,9 @@ export function withSpring(toValue, userConfig, callback) {
16
17
  restSpeedThreshold: 2,
17
18
  velocity: 0
18
19
  };
19
-
20
20
  if (userConfig) {
21
21
  Object.keys(userConfig).forEach(key => config[key] = userConfig[key]);
22
22
  }
23
-
24
23
  function spring(animation, now) {
25
24
  const {
26
25
  toValue,
@@ -36,25 +35,24 @@ export function withSpring(toValue, userConfig, callback) {
36
35
  const v0 = -velocity;
37
36
  const x0 = toValue - current;
38
37
  const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio
39
-
40
38
  const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)
41
-
42
39
  const omega1 = omega0 * Math.sqrt(1 - zeta ** 2); // exponential decay
43
40
 
44
41
  const t = deltaTime / 1000;
45
42
  const sin1 = Math.sin(omega1 * t);
46
- const cos1 = Math.cos(omega1 * t); // under damped
43
+ const cos1 = Math.cos(omega1 * t);
47
44
 
45
+ // under damped
48
46
  const underDampedEnvelope = Math.exp(-zeta * omega0 * t);
49
47
  const underDampedFrag1 = underDampedEnvelope * (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);
50
- const underDampedPosition = toValue - underDampedFrag1; // This looks crazy -- it's actually just the derivative of the oscillation function
51
-
52
- const underDampedVelocity = zeta * omega0 * underDampedFrag1 - underDampedEnvelope * (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1); // critically damped
48
+ const underDampedPosition = toValue - underDampedFrag1;
49
+ // This looks crazy -- it's actually just the derivative of the oscillation function
50
+ const underDampedVelocity = zeta * omega0 * underDampedFrag1 - underDampedEnvelope * (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);
53
51
 
52
+ // critically damped
54
53
  const criticallyDampedEnvelope = Math.exp(-omega0 * t);
55
54
  const criticallyDampedPosition = toValue - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);
56
55
  const criticallyDampedVelocity = criticallyDampedEnvelope * (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);
57
-
58
56
  const isOvershooting = () => {
59
57
  if (config.overshootClamping && config.stiffness !== 0) {
60
58
  return current < toValue ? animation.current > toValue : animation.current < toValue;
@@ -62,10 +60,8 @@ export function withSpring(toValue, userConfig, callback) {
62
60
  return false;
63
61
  }
64
62
  };
65
-
66
63
  const isVelocity = Math.abs(velocity) < config.restSpeedThreshold;
67
64
  const isDisplacement = config.stiffness === 0 || Math.abs(toValue - current) < config.restDisplacementThreshold;
68
-
69
65
  if (zeta < 1) {
70
66
  animation.current = underDampedPosition;
71
67
  animation.velocity = underDampedVelocity;
@@ -73,24 +69,19 @@ export function withSpring(toValue, userConfig, callback) {
73
69
  animation.current = criticallyDampedPosition;
74
70
  animation.velocity = criticallyDampedVelocity;
75
71
  }
76
-
77
72
  if (isOvershooting() || isVelocity && isDisplacement) {
78
73
  if (config.stiffness !== 0) {
79
74
  animation.velocity = 0;
80
75
  animation.current = toValue;
81
- } // clear lastTimestamp to avoid using stale value by the next spring animation that starts after this one
82
-
83
-
76
+ }
77
+ // clear lastTimestamp to avoid using stale value by the next spring animation that starts after this one
84
78
  animation.lastTimestamp = 0;
85
79
  return true;
86
80
  }
87
-
88
81
  return false;
89
82
  }
90
-
91
83
  function onStart(animation, value, now, previousAnimation) {
92
84
  animation.current = value;
93
-
94
85
  if (previousAnimation) {
95
86
  animation.velocity = previousAnimation.velocity || animation.velocity || 0;
96
87
  animation.lastTimestamp = previousAnimation.lastTimestamp || now;
@@ -98,7 +89,6 @@ export function withSpring(toValue, userConfig, callback) {
98
89
  animation.lastTimestamp = now;
99
90
  }
100
91
  }
101
-
102
92
  return {
103
93
  onFrame: spring,
104
94
  onStart,
@@ -1 +1 @@
1
- {"version":3,"names":["defineAnimation","withSpring","toValue","userConfig","callback","config","damping","mass","stiffness","overshootClamping","restDisplacementThreshold","restSpeedThreshold","velocity","Object","keys","forEach","key","spring","animation","now","lastTimestamp","current","deltaTime","Math","min","c","m","k","v0","x0","zeta","sqrt","omega0","omega1","t","sin1","sin","cos1","cos","underDampedEnvelope","exp","underDampedFrag1","underDampedPosition","underDampedVelocity","criticallyDampedEnvelope","criticallyDampedPosition","criticallyDampedVelocity","isOvershooting","isVelocity","abs","isDisplacement","onStart","value","previousAnimation","onFrame"],"sources":["spring.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport {\n Animation,\n AnimationCallback,\n AnimatableValue,\n Timestamp,\n} from '../commonTypes';\n\ninterface SpringConfig {\n mass?: number;\n stiffness?: number;\n overshootClamping?: boolean;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number;\n damping?: number;\n}\n\nexport interface SpringAnimation extends Animation<SpringAnimation> {\n current: AnimatableValue;\n toValue: AnimatableValue;\n velocity: number;\n lastTimestamp: Timestamp;\n}\n\nexport interface InnerSpringAnimation\n extends Omit<SpringAnimation, 'toValue' | 'current'> {\n toValue: number;\n current: number;\n}\n\nexport function withSpring(\n toValue: AnimatableValue,\n userConfig?: SpringConfig,\n callback?: AnimationCallback\n): Animation<SpringAnimation> {\n 'worklet';\n\n return defineAnimation<SpringAnimation>(toValue, () => {\n 'worklet';\n\n // TODO: figure out why we can't use spread or Object.assign here\n // when user config is \"frozen object\" we can't enumerate it (perhaps\n // something is wrong with the object prototype).\n const config: Required<SpringConfig> = {\n damping: 10,\n mass: 1,\n stiffness: 100,\n overshootClamping: false,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 2,\n velocity: 0,\n };\n if (userConfig) {\n Object.keys(userConfig).forEach(\n (key) =>\n ((config as any)[key] = userConfig[key as keyof typeof userConfig])\n );\n }\n\n function spring(animation: InnerSpringAnimation, now: Timestamp): boolean {\n const { toValue, lastTimestamp, current, velocity } = animation;\n\n const deltaTime = Math.min(now - lastTimestamp, 64);\n animation.lastTimestamp = now;\n\n const c = config.damping;\n const m = config.mass;\n const k = config.stiffness;\n\n const v0 = -velocity;\n const x0 = toValue - current;\n\n const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n const omega1 = omega0 * Math.sqrt(1 - zeta ** 2); // exponential decay\n\n const t = deltaTime / 1000;\n\n const sin1 = Math.sin(omega1 * t);\n const cos1 = Math.cos(omega1 * t);\n\n // under damped\n const underDampedEnvelope = Math.exp(-zeta * omega0 * t);\n const underDampedFrag1 =\n underDampedEnvelope *\n (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);\n\n const underDampedPosition = toValue - underDampedFrag1;\n // This looks crazy -- it's actually just the derivative of the oscillation function\n const underDampedVelocity =\n zeta * omega0 * underDampedFrag1 -\n underDampedEnvelope *\n (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);\n\n // critically damped\n const criticallyDampedEnvelope = Math.exp(-omega0 * t);\n const criticallyDampedPosition =\n toValue - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);\n\n const criticallyDampedVelocity =\n criticallyDampedEnvelope *\n (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);\n\n const isOvershooting = () => {\n if (config.overshootClamping && config.stiffness !== 0) {\n return current < toValue\n ? animation.current > toValue\n : animation.current < toValue;\n } else {\n return false;\n }\n };\n\n const isVelocity = Math.abs(velocity) < config.restSpeedThreshold;\n const isDisplacement =\n config.stiffness === 0 ||\n Math.abs(toValue - current) < config.restDisplacementThreshold;\n\n if (zeta < 1) {\n animation.current = underDampedPosition;\n animation.velocity = underDampedVelocity;\n } else {\n animation.current = criticallyDampedPosition;\n animation.velocity = criticallyDampedVelocity;\n }\n\n if (isOvershooting() || (isVelocity && isDisplacement)) {\n if (config.stiffness !== 0) {\n animation.velocity = 0;\n animation.current = toValue;\n }\n // clear lastTimestamp to avoid using stale value by the next spring animation that starts after this one\n animation.lastTimestamp = 0;\n return true;\n }\n return false;\n }\n\n function onStart(\n animation: SpringAnimation,\n value: number,\n now: Timestamp,\n previousAnimation: SpringAnimation\n ): void {\n animation.current = value;\n if (previousAnimation) {\n animation.velocity =\n previousAnimation.velocity || animation.velocity || 0;\n animation.lastTimestamp = previousAnimation.lastTimestamp || now;\n } else {\n animation.lastTimestamp = now;\n }\n }\n\n return {\n onFrame: spring,\n onStart,\n toValue,\n velocity: config.velocity || 0,\n current: toValue,\n callback,\n lastTimestamp: 0,\n } as SpringAnimation;\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["defineAnimation","withSpring","toValue","userConfig","callback","config","damping","mass","stiffness","overshootClamping","restDisplacementThreshold","restSpeedThreshold","velocity","Object","keys","forEach","key","spring","animation","now","lastTimestamp","current","deltaTime","Math","min","c","m","k","v0","x0","zeta","sqrt","omega0","omega1","t","sin1","sin","cos1","cos","underDampedEnvelope","exp","underDampedFrag1","underDampedPosition","underDampedVelocity","criticallyDampedEnvelope","criticallyDampedPosition","criticallyDampedVelocity","isOvershooting","isVelocity","abs","isDisplacement","onStart","value","previousAnimation","onFrame"],"sources":["spring.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport {\n Animation,\n AnimationCallback,\n AnimatableValue,\n Timestamp,\n} from '../commonTypes';\n\ninterface SpringConfig {\n mass?: number;\n stiffness?: number;\n overshootClamping?: boolean;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number;\n damping?: number;\n}\n\nexport interface SpringAnimation extends Animation<SpringAnimation> {\n current: AnimatableValue;\n toValue: AnimatableValue;\n velocity: number;\n lastTimestamp: Timestamp;\n}\n\nexport interface InnerSpringAnimation\n extends Omit<SpringAnimation, 'toValue' | 'current'> {\n toValue: number;\n current: number;\n}\n\nexport function withSpring(\n toValue: AnimatableValue,\n userConfig?: SpringConfig,\n callback?: AnimationCallback\n): Animation<SpringAnimation> {\n 'worklet';\n\n return defineAnimation<SpringAnimation>(toValue, () => {\n 'worklet';\n\n // TODO: figure out why we can't use spread or Object.assign here\n // when user config is \"frozen object\" we can't enumerate it (perhaps\n // something is wrong with the object prototype).\n const config: Required<SpringConfig> = {\n damping: 10,\n mass: 1,\n stiffness: 100,\n overshootClamping: false,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 2,\n velocity: 0,\n };\n if (userConfig) {\n Object.keys(userConfig).forEach(\n (key) =>\n ((config as any)[key] = userConfig[key as keyof typeof userConfig])\n );\n }\n\n function spring(animation: InnerSpringAnimation, now: Timestamp): boolean {\n const { toValue, lastTimestamp, current, velocity } = animation;\n\n const deltaTime = Math.min(now - lastTimestamp, 64);\n animation.lastTimestamp = now;\n\n const c = config.damping;\n const m = config.mass;\n const k = config.stiffness;\n\n const v0 = -velocity;\n const x0 = toValue - current;\n\n const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n const omega1 = omega0 * Math.sqrt(1 - zeta ** 2); // exponential decay\n\n const t = deltaTime / 1000;\n\n const sin1 = Math.sin(omega1 * t);\n const cos1 = Math.cos(omega1 * t);\n\n // under damped\n const underDampedEnvelope = Math.exp(-zeta * omega0 * t);\n const underDampedFrag1 =\n underDampedEnvelope *\n (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);\n\n const underDampedPosition = toValue - underDampedFrag1;\n // This looks crazy -- it's actually just the derivative of the oscillation function\n const underDampedVelocity =\n zeta * omega0 * underDampedFrag1 -\n underDampedEnvelope *\n (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);\n\n // critically damped\n const criticallyDampedEnvelope = Math.exp(-omega0 * t);\n const criticallyDampedPosition =\n toValue - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);\n\n const criticallyDampedVelocity =\n criticallyDampedEnvelope *\n (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);\n\n const isOvershooting = () => {\n if (config.overshootClamping && config.stiffness !== 0) {\n return current < toValue\n ? animation.current > toValue\n : animation.current < toValue;\n } else {\n return false;\n }\n };\n\n const isVelocity = Math.abs(velocity) < config.restSpeedThreshold;\n const isDisplacement =\n config.stiffness === 0 ||\n Math.abs(toValue - current) < config.restDisplacementThreshold;\n\n if (zeta < 1) {\n animation.current = underDampedPosition;\n animation.velocity = underDampedVelocity;\n } else {\n animation.current = criticallyDampedPosition;\n animation.velocity = criticallyDampedVelocity;\n }\n\n if (isOvershooting() || (isVelocity && isDisplacement)) {\n if (config.stiffness !== 0) {\n animation.velocity = 0;\n animation.current = toValue;\n }\n // clear lastTimestamp to avoid using stale value by the next spring animation that starts after this one\n animation.lastTimestamp = 0;\n return true;\n }\n return false;\n }\n\n function onStart(\n animation: SpringAnimation,\n value: number,\n now: Timestamp,\n previousAnimation: SpringAnimation\n ): void {\n animation.current = value;\n if (previousAnimation) {\n animation.velocity =\n previousAnimation.velocity || animation.velocity || 0;\n animation.lastTimestamp = previousAnimation.lastTimestamp || now;\n } else {\n animation.lastTimestamp = now;\n }\n }\n\n return {\n onFrame: spring,\n onStart,\n toValue,\n velocity: config.velocity || 0,\n current: toValue,\n callback,\n lastTimestamp: 0,\n } as SpringAnimation;\n });\n}\n"],"mappings":"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"}