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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.cpp +15 -8
  2. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +170 -166
  3. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +36 -34
  4. package/Common/cpp/Registries/EventHandlerRegistry.cpp +13 -6
  5. package/Common/cpp/Registries/MapperRegistry.cpp +19 -15
  6. package/Common/cpp/Registries/WorkletsCache.cpp +19 -9
  7. package/Common/cpp/SharedItems/FrozenObject.cpp +19 -8
  8. package/Common/cpp/SharedItems/MutableValue.cpp +38 -25
  9. package/Common/cpp/SharedItems/MutableValueSetterProxy.cpp +11 -7
  10. package/Common/cpp/SharedItems/RemoteObject.cpp +9 -5
  11. package/Common/cpp/SharedItems/ShareableValue.cpp +216 -143
  12. package/Common/cpp/Tools/JSIStoreValueUser.cpp +36 -24
  13. package/Common/cpp/Tools/Mapper.cpp +41 -29
  14. package/Common/cpp/Tools/RuntimeDecorator.cpp +103 -84
  15. package/Common/cpp/Tools/Scheduler.cpp +14 -6
  16. package/Common/cpp/Tools/WorkletEventHandler.cpp +1 -1
  17. package/Common/cpp/headers/LayoutAnimations/LayoutAnimationsProxy.h +12 -11
  18. package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +45 -34
  19. package/Common/cpp/headers/NativeModules/NativeReanimatedModuleSpec.h +28 -16
  20. package/Common/cpp/headers/Registries/EventHandlerRegistry.h +14 -8
  21. package/Common/cpp/headers/Registries/MapperRegistry.h +4 -4
  22. package/Common/cpp/headers/Registries/WorkletsCache.h +9 -7
  23. package/Common/cpp/headers/SharedItems/FrozenObject.h +15 -11
  24. package/Common/cpp/headers/SharedItems/HostFunctionHandler.h +6 -4
  25. package/Common/cpp/headers/SharedItems/MutableValue.h +21 -12
  26. package/Common/cpp/headers/SharedItems/MutableValueSetterProxy.h +10 -7
  27. package/Common/cpp/headers/SharedItems/RemoteObject.h +16 -8
  28. package/Common/cpp/headers/SharedItems/RuntimeManager.h +39 -21
  29. package/Common/cpp/headers/SharedItems/ShareableValue.h +31 -27
  30. package/Common/cpp/headers/SharedItems/SharedParent.h +7 -4
  31. package/Common/cpp/headers/SharedItems/ValueWrapper.h +80 -61
  32. package/Common/cpp/headers/SpecTools/ErrorHandler.h +17 -19
  33. package/Common/cpp/headers/Tools/JSIStoreValueUser.h +18 -13
  34. package/Common/cpp/headers/Tools/Mapper.h +24 -18
  35. package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +12 -7
  36. package/Common/cpp/headers/Tools/ReanimatedHiddenHeaders.h +7 -7
  37. package/Common/cpp/headers/Tools/RuntimeDecorator.h +29 -23
  38. package/Common/cpp/headers/Tools/Scheduler.h +28 -33
  39. package/Common/cpp/headers/Tools/WorkletEventHandler.h +9 -7
  40. package/Common/cpp/hidden_headers/Logger.h +14 -14
  41. package/Common/cpp/hidden_headers/LoggerInterface.h +8 -9
  42. package/Common/cpp/hidden_headers/SpeedChecker.h +7 -8
  43. package/README.md +1 -1
  44. package/RNReanimated.podspec +4 -4
  45. package/android/build.gradle +80 -3
  46. package/android/react-native-reanimated-63-hermes.aar +0 -0
  47. package/android/react-native-reanimated-63-jsc.aar +0 -0
  48. package/android/react-native-reanimated-64-hermes.aar +0 -0
  49. package/android/react-native-reanimated-64-jsc.aar +0 -0
  50. package/android/react-native-reanimated-65-hermes.aar +0 -0
  51. package/android/react-native-reanimated-65-jsc.aar +0 -0
  52. package/android/react-native-reanimated-66-hermes.aar +0 -0
  53. package/android/react-native-reanimated-66-jsc.aar +0 -0
  54. package/ios/LayoutReanimation/REAAnimationsManager.h +19 -10
  55. package/ios/LayoutReanimation/REAAnimationsManager.m +195 -200
  56. package/ios/LayoutReanimation/REASnapshot.h +13 -0
  57. package/ios/LayoutReanimation/REASnapshot.m +29 -0
  58. package/ios/LayoutReanimation/REAUIManager.h +16 -0
  59. package/ios/LayoutReanimation/REAUIManager.mm +348 -0
  60. package/ios/Nodes/REAAlwaysNode.m +14 -15
  61. package/ios/Nodes/REABezierNode.m +8 -7
  62. package/ios/Nodes/REABlockNode.m +1 -1
  63. package/ios/Nodes/REACallFuncNode.h +0 -1
  64. package/ios/Nodes/REACallFuncNode.m +10 -8
  65. package/ios/Nodes/REAClockNodes.m +22 -20
  66. package/ios/Nodes/REAConcatNode.h +0 -1
  67. package/ios/Nodes/REAConcatNode.m +2 -2
  68. package/ios/Nodes/REACondNode.m +7 -5
  69. package/ios/Nodes/READebugNode.m +5 -4
  70. package/ios/Nodes/REAEventNode.m +1 -1
  71. package/ios/Nodes/REAFunctionNode.h +0 -1
  72. package/ios/Nodes/REAFunctionNode.m +2 -2
  73. package/ios/Nodes/REAJSCallNode.m +4 -5
  74. package/ios/Nodes/REANode.h +3 -4
  75. package/ios/Nodes/REANode.m +9 -11
  76. package/ios/Nodes/REAOperatorNode.m +68 -67
  77. package/ios/Nodes/REAParamNode.h +1 -3
  78. package/ios/Nodes/REAParamNode.m +15 -17
  79. package/ios/Nodes/REAPropsNode.h +1 -3
  80. package/ios/Nodes/REAPropsNode.m +19 -22
  81. package/ios/Nodes/REASetNode.h +0 -1
  82. package/ios/Nodes/REASetNode.m +7 -5
  83. package/ios/Nodes/REAStyleNode.h +0 -1
  84. package/ios/Nodes/REAStyleNode.m +2 -4
  85. package/ios/Nodes/REATransformNode.h +0 -1
  86. package/ios/Nodes/REATransformNode.m +3 -5
  87. package/ios/Nodes/REAValueNode.m +5 -7
  88. package/ios/REAEventDispatcher.m +3 -3
  89. package/ios/REAModule.h +0 -2
  90. package/ios/REAModule.m +29 -40
  91. package/ios/REANodesManager.h +11 -19
  92. package/ios/REANodesManager.m +105 -130
  93. package/ios/REAUtils.h +5 -3
  94. package/ios/Transitioning/RCTConvert+REATransition.m +45 -29
  95. package/ios/Transitioning/REAAllTransitions.h +2 -2
  96. package/ios/Transitioning/REAAllTransitions.m +14 -25
  97. package/ios/Transitioning/REATransition.h +8 -7
  98. package/ios/Transitioning/REATransition.m +19 -16
  99. package/ios/Transitioning/REATransitionAnimation.h +1 -1
  100. package/ios/Transitioning/REATransitionAnimation.m +2 -3
  101. package/ios/Transitioning/REATransitionManager.m +3 -3
  102. package/ios/native/NativeMethods.h +15 -5
  103. package/ios/native/NativeProxy.h +4 -3
  104. package/ios/native/NativeProxy.mm +19 -5
  105. package/ios/native/REAIOSErrorHandler.h +13 -10
  106. package/ios/native/REAIOSLogger.h +8 -8
  107. package/ios/native/REAIOSScheduler.h +5 -5
  108. package/ios/native/REAIOSScheduler.mm +7 -5
  109. package/ios/native/REAInitializer.h +37 -0
  110. package/ios/native/REAInitializer.mm +63 -0
  111. package/ios/native/UIResponder+Reanimated.mm +9 -48
  112. package/lib/ConfigHelper.js +1 -0
  113. package/lib/ReanimatedModule.native.js +10 -2
  114. package/lib/createAnimatedComponent.js +64 -30
  115. package/lib/reanimated1/core/AnimatedAlways.js +1 -1
  116. package/lib/reanimated1/core/AnimatedBezier.js +1 -1
  117. package/lib/reanimated1/core/AnimatedBlock.js +1 -1
  118. package/lib/reanimated1/core/AnimatedCall.js +1 -1
  119. package/lib/reanimated1/core/AnimatedCallFunc.js +1 -1
  120. package/lib/reanimated1/core/AnimatedConcat.js +1 -1
  121. package/lib/reanimated1/core/AnimatedCond.js +1 -1
  122. package/lib/reanimated1/core/AnimatedDebug.js +1 -1
  123. package/lib/reanimated1/core/AnimatedEvent.js +1 -1
  124. package/lib/reanimated1/core/AnimatedFunction.js +1 -1
  125. package/lib/reanimated1/core/AnimatedOperator.js +1 -1
  126. package/lib/reanimated1/core/AnimatedParam.js +1 -1
  127. package/lib/reanimated1/core/AnimatedProps.js +2 -2
  128. package/lib/reanimated1/core/AnimatedSet.js +1 -1
  129. package/lib/reanimated1/core/AnimatedStartClock.js +1 -1
  130. package/lib/reanimated1/core/AnimatedStopClock.js +1 -1
  131. package/lib/reanimated1/core/AnimatedStyle.js +1 -1
  132. package/lib/reanimated1/core/AnimatedTransform.js +1 -1
  133. package/lib/reanimated1/core/Core.test.js +30 -0
  134. package/lib/reanimated1/core/InternalAnimatedValue.js +1 -1
  135. package/lib/reanimated1/core/__mocks__/AnimatedProps.js +1 -1
  136. package/lib/reanimated1/derived/interpolate.js +1 -1
  137. package/lib/reanimated2/Colors.js +16 -12
  138. package/lib/reanimated2/NativeMethods.js +3 -14
  139. package/lib/reanimated2/{NativeReanimated.native.js → NativeReanimated/NativeReanimated.js} +19 -24
  140. package/lib/reanimated2/NativeReanimated/index.js +15 -0
  141. package/lib/reanimated2/PlatformChecker.js +16 -0
  142. package/lib/reanimated2/PropAdapters.js +14 -4
  143. package/lib/reanimated2/UpdateProps.js +14 -11
  144. package/lib/reanimated2/ViewDescriptorsSet.js +73 -0
  145. package/lib/reanimated2/WorkletEventHandler.js +15 -13
  146. package/lib/reanimated2/animation/commonTypes.js +1 -0
  147. package/lib/reanimated2/animation/decay.js +71 -0
  148. package/lib/reanimated2/animation/delay.js +64 -0
  149. package/lib/reanimated2/animation/index.js +8 -0
  150. package/lib/reanimated2/animation/repeat.js +69 -0
  151. package/lib/reanimated2/animation/sequence.js +72 -0
  152. package/lib/reanimated2/animation/spring.js +101 -0
  153. package/lib/reanimated2/animation/styleAnimation.js +166 -0
  154. package/lib/reanimated2/animation/timing.js +64 -0
  155. package/lib/reanimated2/animation/util.js +157 -0
  156. package/lib/reanimated2/commonTypes.js +1 -0
  157. package/lib/reanimated2/core.js +35 -39
  158. package/lib/reanimated2/globals.d.ts +47 -1
  159. package/lib/reanimated2/hook/Hooks.js +9 -0
  160. package/lib/reanimated2/hook/commonTypes.js +1 -0
  161. package/lib/reanimated2/hook/index.js +8 -0
  162. package/lib/reanimated2/hook/useAnimatedGestureHandler.js +50 -0
  163. package/lib/reanimated2/hook/useAnimatedReaction.js +37 -0
  164. package/lib/reanimated2/hook/useAnimatedRef.js +25 -0
  165. package/lib/reanimated2/hook/useAnimatedScrollHandler.js +41 -0
  166. package/lib/reanimated2/hook/useAnimatedStyle.js +376 -0
  167. package/lib/reanimated2/hook/useDerivedValue.js +36 -0
  168. package/lib/reanimated2/hook/useSharedValue.js +17 -0
  169. package/lib/reanimated2/hook/utils.js +175 -0
  170. package/lib/reanimated2/index.js +3 -2
  171. package/lib/reanimated2/interpolation.js +95 -86
  172. package/lib/reanimated2/jestUtils.js +0 -12
  173. package/lib/reanimated2/js-reanimated/JSReanimated.js +9 -10
  174. package/lib/reanimated2/js-reanimated/index.js +57 -1
  175. package/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.js +58 -0
  176. package/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +69 -0
  177. package/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +125 -0
  178. package/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +193 -0
  179. package/lib/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +1 -0
  180. package/lib/reanimated2/layoutReanimation/animationBuilder/index.js +3 -0
  181. package/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +325 -207
  182. package/lib/reanimated2/layoutReanimation/defaultAnimations/Default.js +36 -0
  183. package/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.js +235 -187
  184. package/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.js +327 -269
  185. package/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +146 -0
  186. package/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +85 -0
  187. package/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.js +119 -0
  188. package/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +289 -0
  189. package/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.js +159 -121
  190. package/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +83 -65
  191. package/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +371 -277
  192. package/lib/reanimated2/layoutReanimation/defaultAnimations/index.js +4 -0
  193. package/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +78 -0
  194. package/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +128 -0
  195. package/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +37 -0
  196. package/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +41 -0
  197. package/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +34 -0
  198. package/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +46 -0
  199. package/lib/reanimated2/layoutReanimation/defaultTransitions/index.js +6 -0
  200. package/lib/reanimated2/layoutReanimation/index.js +3 -2
  201. package/lib/reanimated2/platform-specific/RNRenderer.web.js +2 -0
  202. package/lib/reanimated2/utils.js +9 -0
  203. package/libSo/fbjni/jni/arm64-v8a/libfbjni.so +0 -0
  204. package/libSo/fbjni/jni/armeabi-v7a/libfbjni.so +0 -0
  205. package/libSo/fbjni/jni/x86/libfbjni.so +0 -0
  206. package/libSo/fbjni/jni/x86_64/libfbjni.so +0 -0
  207. package/package.json +21 -10
  208. package/plugin.js +244 -85
  209. package/react-native-reanimated.d.ts +531 -453
  210. package/src/ConfigHelper.js +1 -0
  211. package/src/ReanimatedModule.native.js +10 -2
  212. package/src/createAnimatedComponent.js +64 -30
  213. package/src/reanimated1/core/AnimatedAlways.js +1 -1
  214. package/src/reanimated1/core/AnimatedBezier.js +1 -1
  215. package/src/reanimated1/core/AnimatedBlock.js +1 -1
  216. package/src/reanimated1/core/AnimatedCall.js +1 -1
  217. package/src/reanimated1/core/AnimatedCallFunc.js +1 -1
  218. package/src/reanimated1/core/AnimatedConcat.js +1 -1
  219. package/src/reanimated1/core/AnimatedCond.js +1 -1
  220. package/src/reanimated1/core/AnimatedDebug.js +1 -1
  221. package/src/reanimated1/core/AnimatedEvent.js +1 -1
  222. package/src/reanimated1/core/AnimatedFunction.js +1 -1
  223. package/src/reanimated1/core/AnimatedOperator.js +1 -1
  224. package/src/reanimated1/core/AnimatedParam.js +1 -1
  225. package/src/reanimated1/core/AnimatedProps.js +2 -2
  226. package/src/reanimated1/core/AnimatedSet.js +1 -1
  227. package/src/reanimated1/core/AnimatedStartClock.js +1 -1
  228. package/src/reanimated1/core/AnimatedStopClock.js +1 -1
  229. package/src/reanimated1/core/AnimatedStyle.js +1 -1
  230. package/src/reanimated1/core/AnimatedTransform.js +1 -1
  231. package/src/reanimated1/core/Core.test.js +30 -0
  232. package/src/reanimated1/core/InternalAnimatedValue.js +1 -1
  233. package/src/reanimated1/core/__mocks__/AnimatedProps.js +1 -1
  234. package/src/reanimated1/derived/interpolate.js +1 -1
  235. package/src/reanimated2/Colors.ts +30 -27
  236. package/src/reanimated2/Easing.ts +3 -1
  237. package/src/reanimated2/NativeMethods.ts +26 -16
  238. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +78 -0
  239. package/src/reanimated2/NativeReanimated/index.ts +18 -0
  240. package/src/reanimated2/PlatformChecker.ts +21 -0
  241. package/src/reanimated2/PropAdapters.ts +52 -34
  242. package/src/reanimated2/UpdateProps.ts +40 -20
  243. package/src/reanimated2/ViewDescriptorsSet.ts +108 -0
  244. package/src/reanimated2/WorkletEventHandler.ts +41 -23
  245. package/src/reanimated2/animation/commonTypes.ts +48 -0
  246. package/src/reanimated2/animation/decay.ts +141 -0
  247. package/src/reanimated2/animation/delay.ts +103 -0
  248. package/src/reanimated2/animation/index.ts +16 -0
  249. package/src/reanimated2/animation/repeat.ts +128 -0
  250. package/src/reanimated2/animation/sequence.ts +110 -0
  251. package/src/reanimated2/animation/spring.ts +165 -0
  252. package/src/reanimated2/animation/styleAnimation.ts +253 -0
  253. package/src/reanimated2/animation/timing.ts +109 -0
  254. package/src/reanimated2/animation/util.ts +242 -0
  255. package/src/reanimated2/commonTypes.ts +81 -0
  256. package/src/reanimated2/core.ts +128 -82
  257. package/src/reanimated2/globals.d.ts +47 -1
  258. package/src/reanimated2/hook/Hooks.ts +16 -0
  259. package/src/reanimated2/hook/commonTypes.ts +12 -0
  260. package/src/reanimated2/hook/index.ts +25 -0
  261. package/src/reanimated2/hook/useAnimatedGestureHandler.ts +110 -0
  262. package/src/reanimated2/hook/useAnimatedReaction.ts +49 -0
  263. package/src/reanimated2/hook/useAnimatedRef.ts +34 -0
  264. package/src/reanimated2/hook/useAnimatedScrollHandler.ts +83 -0
  265. package/src/reanimated2/hook/useAnimatedStyle.ts +538 -0
  266. package/src/reanimated2/hook/useDerivedValue.ts +48 -0
  267. package/src/reanimated2/hook/useSharedValue.ts +22 -0
  268. package/src/reanimated2/hook/utils.ts +259 -0
  269. package/src/reanimated2/index.ts +3 -2
  270. package/src/reanimated2/interpolation.ts +170 -101
  271. package/src/reanimated2/jestUtils.ts +0 -12
  272. package/src/reanimated2/js-reanimated/JSReanimated.ts +47 -22
  273. package/src/reanimated2/js-reanimated/Mapper.ts +1 -1
  274. package/src/reanimated2/js-reanimated/index.ts +71 -0
  275. package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.tsx +62 -0
  276. package/src/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.ts +91 -0
  277. package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +169 -0
  278. package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +263 -0
  279. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +78 -0
  280. package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +16 -0
  281. package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +243 -121
  282. package/src/reanimated2/layoutReanimation/defaultAnimations/Default.ts +43 -0
  283. package/src/reanimated2/layoutReanimation/defaultAnimations/Fade.ts +95 -53
  284. package/src/reanimated2/layoutReanimation/defaultAnimations/Flip.ts +114 -64
  285. package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +179 -0
  286. package/src/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.ts +93 -0
  287. package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +132 -0
  288. package/src/reanimated2/layoutReanimation/defaultAnimations/Rotate.ts +333 -0
  289. package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +84 -50
  290. package/src/reanimated2/layoutReanimation/defaultAnimations/Stretch.ts +41 -23
  291. package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +234 -154
  292. package/src/reanimated2/layoutReanimation/defaultAnimations/index.ts +4 -0
  293. package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +104 -0
  294. package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +213 -0
  295. package/src/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.ts +60 -0
  296. package/src/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.ts +58 -0
  297. package/src/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.ts +41 -0
  298. package/src/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.ts +78 -0
  299. package/src/reanimated2/layoutReanimation/defaultTransitions/index.ts +6 -0
  300. package/src/reanimated2/layoutReanimation/index.ts +3 -2
  301. package/src/reanimated2/platform-specific/RNRenderer.web.ts +2 -0
  302. package/src/reanimated2/utils.ts +21 -0
  303. package/android/react-native-reanimated-62-hermes.aar +0 -0
  304. package/android/react-native-reanimated-62-jsc.aar +0 -0
  305. package/ios/LayoutReanimation/REAAnimationRootView.h +0 -12
  306. package/ios/LayoutReanimation/REAAnimationRootView.m +0 -16
  307. package/ios/LayoutReanimation/REAAnimationRootViewManager.h +0 -9
  308. package/ios/LayoutReanimation/REAAnimationRootViewManager.m +0 -49
  309. package/ios/LayoutReanimation/REAReactBatchObserver.h +0 -20
  310. package/ios/LayoutReanimation/REAReactBatchObserver.m +0 -125
  311. package/ios/LayoutReanimation/REASnapshooter.h +0 -19
  312. package/ios/LayoutReanimation/REASnapshooter.m +0 -64
  313. package/ios/LayoutReanimation/REAViewTraverser.h +0 -13
  314. package/ios/LayoutReanimation/REAViewTraverser.m +0 -40
  315. package/lib/reanimated2/Hooks.js +0 -732
  316. package/lib/reanimated2/NativeReanimated.js +0 -4
  317. package/lib/reanimated2/animations.js +0 -713
  318. package/lib/reanimated2/js-reanimated/index.web.js +0 -20
  319. package/lib/reanimated2/layoutReanimation/AnimatedRoot.js +0 -55
  320. package/lib/reanimated2/layoutReanimation/defaultAnimationsBuilder.js +0 -374
  321. package/src/reanimated2/Hooks.ts +0 -918
  322. package/src/reanimated2/NativeReanimated.native.ts +0 -61
  323. package/src/reanimated2/NativeReanimated.ts +0 -5
  324. package/src/reanimated2/animations.ts +0 -868
  325. package/src/reanimated2/js-reanimated/index.js +0 -0
  326. package/src/reanimated2/js-reanimated/index.web.ts +0 -29
  327. package/src/reanimated2/layoutReanimation/AnimatedRoot.tsx +0 -68
  328. package/src/reanimated2/layoutReanimation/defaultAnimationsBuilder.ts +0 -440
@@ -0,0 +1,253 @@
1
+ import { defineAnimation } from './util';
2
+ import {
3
+ Timestamp,
4
+ HigherOrderAnimation,
5
+ AnimationCallback,
6
+ PrimitiveValue,
7
+ AnimationObject,
8
+ Animation,
9
+ } from './commonTypes';
10
+ import {
11
+ AnimatedStyle,
12
+ NestedObject,
13
+ NestedObjectValues,
14
+ StyleProps,
15
+ } from '../commonTypes';
16
+ import { withTiming } from './timing';
17
+
18
+ export interface StyleLayoutAnimation extends HigherOrderAnimation {
19
+ current: StyleProps;
20
+ styleAnimations: AnimatedStyle;
21
+ onFrame: (animation: StyleLayoutAnimation, timestamp: Timestamp) => boolean;
22
+ onStart: (
23
+ nextAnimation: StyleLayoutAnimation,
24
+ current: AnimatedStyle,
25
+ timestamp: Timestamp,
26
+ previousAnimation: StyleLayoutAnimation
27
+ ) => void;
28
+ callback?: AnimationCallback;
29
+ }
30
+
31
+ // resolves path to value for nested objects
32
+ // if path cannot be resolved returns undefined
33
+ export function resolvePath<T>(
34
+ obj: NestedObject<T>,
35
+ path: PrimitiveValue[] | PrimitiveValue
36
+ ): NestedObjectValues<T> | undefined {
37
+ 'worklet';
38
+ const keys: PrimitiveValue[] = Array.isArray(path) ? path : [path];
39
+ return keys.reduce<NestedObjectValues<T> | undefined>((acc, current) => {
40
+ if (Array.isArray(acc) && typeof current === 'number') {
41
+ return acc[current];
42
+ } else if (typeof acc === 'object' && current in acc) {
43
+ return (acc as { [key: string]: NestedObjectValues<T> })[current];
44
+ }
45
+ return undefined;
46
+ }, obj);
47
+ }
48
+
49
+ // set value at given path
50
+ export function setPath<T>(
51
+ obj: NestedObject<T>,
52
+ path: PrimitiveValue[] | PrimitiveValue,
53
+ value: NestedObjectValues<T>
54
+ ): void {
55
+ 'worklet';
56
+ const keys: PrimitiveValue[] = Array.isArray(path) ? path : [path];
57
+ let currObj: NestedObjectValues<T> = obj;
58
+ for (let i = 0; i < keys.length - 1; i++) {
59
+ // creates entry if there isn't one
60
+ currObj = currObj as { [key: string]: NestedObjectValues<T> };
61
+ if (!currObj[keys[i]]) {
62
+ // if next key is a number create an array
63
+ if (typeof keys[i + 1] === 'number') {
64
+ currObj[keys[i]] = [];
65
+ } else {
66
+ currObj[keys[i]] = {};
67
+ }
68
+ }
69
+ currObj = currObj[keys[i]];
70
+ }
71
+
72
+ (currObj as { [key: string]: NestedObjectValues<T> })[
73
+ keys[keys.length - 1]
74
+ ] = value;
75
+ }
76
+
77
+ interface NestedObjectEntry<T> {
78
+ value: NestedObjectValues<T>;
79
+ path: PrimitiveValue[];
80
+ }
81
+
82
+ export function withStyleAnimation(
83
+ styleAnimations: AnimatedStyle
84
+ ): StyleLayoutAnimation {
85
+ 'worklet';
86
+ return defineAnimation<StyleLayoutAnimation>({}, () => {
87
+ 'worklet';
88
+
89
+ const onFrame = (
90
+ animation: StyleLayoutAnimation,
91
+ now: Timestamp
92
+ ): boolean => {
93
+ let stillGoing = false;
94
+ const entriesToCheck: NestedObjectEntry<AnimationObject>[] = [
95
+ { value: animation.styleAnimations, path: [] },
96
+ ];
97
+ while (entriesToCheck.length > 0) {
98
+ const currentEntry: NestedObjectEntry<AnimationObject> = entriesToCheck.pop() as NestedObjectEntry<AnimationObject>;
99
+ if (Array.isArray(currentEntry.value)) {
100
+ for (let index = 0; index < currentEntry.value.length; index++) {
101
+ entriesToCheck.push({
102
+ value: currentEntry.value[index],
103
+ path: currentEntry.path.concat(index),
104
+ });
105
+ }
106
+ } else if (
107
+ typeof currentEntry.value === 'object' &&
108
+ currentEntry.value.onFrame === undefined
109
+ ) {
110
+ // nested object
111
+ for (const key of Object.keys(currentEntry.value)) {
112
+ entriesToCheck.push({
113
+ value: currentEntry.value[key],
114
+ path: currentEntry.path.concat(key),
115
+ });
116
+ }
117
+ } else {
118
+ const currentStyleAnimation: AnimationObject = currentEntry.value as AnimationObject;
119
+ if (currentStyleAnimation.finished) {
120
+ continue;
121
+ }
122
+ const finished = currentStyleAnimation.onFrame(
123
+ currentStyleAnimation,
124
+ now
125
+ );
126
+ if (finished) {
127
+ currentStyleAnimation.finished = true;
128
+ if (currentStyleAnimation.callback) {
129
+ currentStyleAnimation.callback(true);
130
+ }
131
+ } else {
132
+ stillGoing = true;
133
+ }
134
+ setPath(
135
+ animation.current,
136
+ currentEntry.path,
137
+ currentStyleAnimation.current
138
+ );
139
+ }
140
+ }
141
+ return !stillGoing;
142
+ };
143
+
144
+ const onStart = (
145
+ animation: StyleLayoutAnimation,
146
+ value: AnimatedStyle,
147
+ now: Timestamp,
148
+ previousAnimation: StyleLayoutAnimation
149
+ ): void => {
150
+ const entriesToCheck: NestedObjectEntry<
151
+ AnimationObject | PrimitiveValue
152
+ >[] = [{ value: styleAnimations, path: [] }];
153
+ while (entriesToCheck.length > 0) {
154
+ const currentEntry: NestedObjectEntry<
155
+ AnimationObject | PrimitiveValue
156
+ > = entriesToCheck.pop() as NestedObjectEntry<
157
+ AnimationObject | PrimitiveValue
158
+ >;
159
+ if (Array.isArray(currentEntry.value)) {
160
+ for (let index = 0; index < currentEntry.value.length; index++) {
161
+ entriesToCheck.push({
162
+ value: currentEntry.value[index],
163
+ path: currentEntry.path.concat(index),
164
+ });
165
+ }
166
+ } else if (
167
+ typeof currentEntry.value === 'object' &&
168
+ currentEntry.value.onStart === undefined
169
+ ) {
170
+ for (const key of Object.keys(currentEntry.value)) {
171
+ entriesToCheck.push({
172
+ value: currentEntry.value[key],
173
+ path: currentEntry.path.concat(key),
174
+ });
175
+ }
176
+ } else {
177
+ const prevAnimation = resolvePath(
178
+ previousAnimation?.styleAnimations,
179
+ currentEntry.path
180
+ );
181
+ let prevVal = resolvePath(value, currentEntry.path);
182
+ if (prevAnimation && !prevVal) {
183
+ prevVal = prevAnimation.current;
184
+ }
185
+ setPath(animation.current, currentEntry.path, prevVal);
186
+ let currentAnimation: AnimationObject;
187
+ if (
188
+ typeof currentEntry.value !== 'object' ||
189
+ !currentEntry.value.onStart
190
+ ) {
191
+ currentAnimation = withTiming(
192
+ currentEntry.value as PrimitiveValue,
193
+ { duration: 0 }
194
+ );
195
+ setPath(
196
+ animation.styleAnimations,
197
+ currentEntry.path,
198
+ currentAnimation
199
+ );
200
+ } else {
201
+ currentAnimation = currentEntry.value as Animation<AnimationObject>;
202
+ }
203
+ currentAnimation.onStart(
204
+ currentAnimation,
205
+ prevVal,
206
+ now,
207
+ prevAnimation
208
+ );
209
+ }
210
+ }
211
+ };
212
+
213
+ const callback = (finished: boolean): void => {
214
+ if (!finished) {
215
+ const animationsToCheck: NestedObjectValues<AnimationObject>[] = [
216
+ styleAnimations,
217
+ ];
218
+ while (animationsToCheck.length > 0) {
219
+ const currentAnimation: NestedObjectValues<AnimationObject> = animationsToCheck.pop() as NestedObjectValues<AnimationObject>;
220
+ if (Array.isArray(currentAnimation)) {
221
+ for (const element of currentAnimation) {
222
+ animationsToCheck.push(element);
223
+ }
224
+ } else if (
225
+ typeof currentAnimation === 'object' &&
226
+ currentAnimation.onStart === undefined
227
+ ) {
228
+ for (const value of Object.values(currentAnimation)) {
229
+ animationsToCheck.push(value);
230
+ }
231
+ } else {
232
+ const currentStyleAnimation: AnimationObject = currentAnimation as AnimationObject;
233
+ if (
234
+ !currentStyleAnimation.finished &&
235
+ currentStyleAnimation.callback
236
+ ) {
237
+ currentStyleAnimation.callback(false);
238
+ }
239
+ }
240
+ }
241
+ }
242
+ };
243
+
244
+ return {
245
+ isHigherOrder: true,
246
+ onFrame,
247
+ onStart,
248
+ current: {},
249
+ styleAnimations,
250
+ callback,
251
+ } as StyleLayoutAnimation;
252
+ });
253
+ }
@@ -0,0 +1,109 @@
1
+ import { Easing, EasingFn, EasingFactoryFn } from '../Easing';
2
+ import { defineAnimation } from './util';
3
+ import {
4
+ Animation,
5
+ AnimationCallback,
6
+ Timestamp,
7
+ PrimitiveValue,
8
+ } from './commonTypes';
9
+
10
+ interface TimingConfig {
11
+ duration?: number;
12
+ easing?: EasingFn | EasingFactoryFn;
13
+ }
14
+
15
+ export interface TimingAnimation extends Animation<TimingAnimation> {
16
+ type: string;
17
+ easing: EasingFn;
18
+ startValue: PrimitiveValue;
19
+ startTime: Timestamp;
20
+ progress: number;
21
+ toValue: PrimitiveValue;
22
+ current: PrimitiveValue;
23
+ }
24
+
25
+ export interface InnerTimingAnimation
26
+ extends Omit<TimingAnimation, 'toValue' | 'current'> {
27
+ toValue: number;
28
+ current: number;
29
+ }
30
+
31
+ export function withTiming(
32
+ toValue: PrimitiveValue,
33
+ userConfig?: TimingConfig,
34
+ callback?: AnimationCallback
35
+ ): Animation<TimingAnimation> {
36
+ 'worklet';
37
+
38
+ return defineAnimation<TimingAnimation>(toValue, () => {
39
+ 'worklet';
40
+ const config: Required<TimingConfig> = {
41
+ duration: 300,
42
+ easing: Easing.inOut(Easing.quad),
43
+ };
44
+ if (userConfig) {
45
+ Object.keys(userConfig).forEach(
46
+ (key) =>
47
+ ((config as any)[key] = userConfig[key as keyof typeof userConfig])
48
+ );
49
+ }
50
+
51
+ function timing(animation: InnerTimingAnimation, now: Timestamp): boolean {
52
+ const { toValue, startTime, startValue } = animation;
53
+ const runtime = now - startTime;
54
+
55
+ if (runtime >= config.duration) {
56
+ // reset startTime to avoid reusing finished animation config in `start` method
57
+ animation.startTime = 0;
58
+ animation.current = toValue;
59
+ return true;
60
+ }
61
+ const progress = animation.easing(runtime / config.duration);
62
+ animation.current =
63
+ (startValue as number) + (toValue - (startValue as number)) * progress;
64
+ return false;
65
+ }
66
+
67
+ function onStart(
68
+ animation: TimingAnimation,
69
+ value: number,
70
+ now: Timestamp,
71
+ previousAnimation: Animation<TimingAnimation>
72
+ ): void {
73
+ if (
74
+ previousAnimation &&
75
+ (previousAnimation as TimingAnimation).type === 'timing' &&
76
+ (previousAnimation as TimingAnimation).toValue === toValue &&
77
+ (previousAnimation as TimingAnimation).startTime
78
+ ) {
79
+ // to maintain continuity of timing animations we check if we are starting
80
+ // new timing over the old one with the same parameters. If so, we want
81
+ // to copy animation timeline properties
82
+ animation.startTime = (previousAnimation as TimingAnimation).startTime;
83
+ animation.startValue = (previousAnimation as TimingAnimation).startValue;
84
+ } else {
85
+ animation.startTime = now;
86
+ animation.startValue = value;
87
+ }
88
+ animation.current = value;
89
+ if (typeof config.easing === 'object') {
90
+ animation.easing = config.easing.factory();
91
+ } else {
92
+ animation.easing = config.easing;
93
+ }
94
+ }
95
+
96
+ return {
97
+ type: 'timing',
98
+ onFrame: timing,
99
+ onStart: onStart as (animation: TimingAnimation, now: number) => boolean,
100
+ progress: 0,
101
+ toValue,
102
+ startValue: 0,
103
+ startTime: 0,
104
+ easing: () => 0,
105
+ current: toValue,
106
+ callback,
107
+ } as TimingAnimation;
108
+ });
109
+ }
@@ -0,0 +1,242 @@
1
+ import {
2
+ Animation,
3
+ AnimationObject,
4
+ HigherOrderAnimation,
5
+ NextAnimation,
6
+ PrimitiveValue,
7
+ Timestamp,
8
+ } from './commonTypes';
9
+ /* global _WORKLET */
10
+ import { ParsedColorArray, convertToHSVA, isColor, toRGBA } from '../Colors';
11
+
12
+ import { AnimatedStyle, SharedValue } from '../commonTypes';
13
+ import { DelayAnimation } from './delay';
14
+ import NativeReanimatedModule from '../NativeReanimated';
15
+ import { RepeatAnimation } from './repeat';
16
+ import { SequenceAnimation } from './sequence';
17
+ import { StyleLayoutAnimation } from './styleAnimation';
18
+
19
+ let IN_STYLE_UPDATER = false;
20
+
21
+ export type UserUpdater = () => AnimatedStyle;
22
+
23
+ export function initialUpdaterRun<T>(updater: () => T): T {
24
+ IN_STYLE_UPDATER = true;
25
+ const result = updater();
26
+ IN_STYLE_UPDATER = false;
27
+ return result;
28
+ }
29
+ interface RecognizedPrefixSuffix {
30
+ prefix?: string;
31
+ suffix?: string;
32
+ strippedValue: number;
33
+ }
34
+
35
+ function recognizePrefixSuffix(value: PrimitiveValue): RecognizedPrefixSuffix {
36
+ 'worklet';
37
+ if (typeof value === 'string') {
38
+ const match = value.match(
39
+ /([A-Za-z]*)(-?\d*\.?\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/
40
+ );
41
+ if (!match) {
42
+ throw Error(
43
+ "Couldn't parse animation value. Check if there isn't any typo."
44
+ );
45
+ }
46
+ const prefix = match[1];
47
+ const suffix = match[4];
48
+ // number with scientific notation
49
+ const number = match[2] + (match[3] ?? '');
50
+ return { prefix, suffix, strippedValue: parseFloat(number) };
51
+ } else {
52
+ return { strippedValue: value };
53
+ }
54
+ }
55
+
56
+ function decorateAnimation<T extends AnimationObject | StyleLayoutAnimation>(
57
+ animation: T
58
+ ): void {
59
+ 'worklet';
60
+ if ((animation as HigherOrderAnimation).isHigherOrder) {
61
+ return;
62
+ }
63
+
64
+ const baseOnStart = (animation as Animation<AnimationObject>).onStart;
65
+ const baseOnFrame = (animation as Animation<AnimationObject>).onFrame;
66
+ const animationCopy = Object.assign({}, animation);
67
+ delete animationCopy.callback;
68
+
69
+ const prefNumberSuffOnStart = (
70
+ animation: Animation<AnimationObject>,
71
+ value: PrimitiveValue,
72
+ timestamp: number,
73
+ previousAnimation: Animation<AnimationObject>
74
+ ) => {
75
+ // recognize prefix, suffix, and updates stripped value on animation start
76
+ const { prefix, suffix, strippedValue } = recognizePrefixSuffix(value);
77
+ animation.__prefix = prefix;
78
+ animation.__suffix = suffix;
79
+ animation.strippedCurrent = strippedValue;
80
+ const { strippedValue: strippedToValue } = recognizePrefixSuffix(
81
+ animation.toValue as PrimitiveValue
82
+ );
83
+ animation.current = strippedValue;
84
+ animation.startValue = strippedValue;
85
+ animation.toValue = strippedToValue;
86
+ if (previousAnimation && previousAnimation !== animation) {
87
+ previousAnimation.current = previousAnimation.strippedCurrent;
88
+ }
89
+
90
+ baseOnStart(animation, strippedValue, timestamp, previousAnimation);
91
+
92
+ animation.current =
93
+ (animation.__prefix ?? '') +
94
+ animation.current +
95
+ (animation.__suffix ?? '');
96
+
97
+ if (previousAnimation && previousAnimation !== animation) {
98
+ previousAnimation.current =
99
+ (previousAnimation.__prefix ?? '') +
100
+ previousAnimation.current +
101
+ (previousAnimation.__suffix ?? '');
102
+ }
103
+ };
104
+ const prefNumberSuffOnFrame = (
105
+ animation: Animation<AnimationObject>,
106
+ timestamp: number
107
+ ) => {
108
+ animation.current = animation.strippedCurrent;
109
+ const res = baseOnFrame(animation, timestamp);
110
+ animation.strippedCurrent = animation.current;
111
+ animation.current =
112
+ (animation.__prefix ?? '') +
113
+ animation.current +
114
+ (animation.__suffix ?? '');
115
+ return res;
116
+ };
117
+
118
+ const tab = ['H', 'S', 'V', 'A'];
119
+ const colorOnStart = (
120
+ animation: Animation<AnimationObject>,
121
+ value: string | number,
122
+ timestamp: Timestamp,
123
+ previousAnimation: Animation<AnimationObject>
124
+ ): void => {
125
+ let HSVAValue: ParsedColorArray;
126
+ let HSVACurrent: ParsedColorArray;
127
+ let HSVAToValue: ParsedColorArray;
128
+ const res: Array<number> = [];
129
+ if (isColor(value)) {
130
+ HSVACurrent = convertToHSVA(animation.current);
131
+ HSVAValue = convertToHSVA(value);
132
+ if (animation.toValue) {
133
+ HSVAToValue = convertToHSVA(animation.toValue);
134
+ }
135
+ }
136
+ tab.forEach((i, index) => {
137
+ animation[i] = Object.assign({}, animationCopy);
138
+ animation[i].current = HSVACurrent[index];
139
+ animation[i].toValue = HSVAToValue ? HSVAToValue[index] : undefined;
140
+ animation[i].onStart(
141
+ animation[i],
142
+ HSVAValue[index],
143
+ timestamp,
144
+ previousAnimation ? previousAnimation[i] : undefined
145
+ );
146
+ res.push(animation[i].current);
147
+ });
148
+
149
+ animation.current = toRGBA(res as ParsedColorArray);
150
+ };
151
+
152
+ const colorOnFrame = (
153
+ animation: Animation<AnimationObject>,
154
+ timestamp: Timestamp
155
+ ): boolean => {
156
+ const HSVACurrent = convertToHSVA(animation.current);
157
+ const res: Array<number> = [];
158
+ let finished = true;
159
+ tab.forEach((i, index) => {
160
+ animation[i].current = HSVACurrent[index];
161
+ // @ts-ignore: disable-next-line
162
+ finished &= animation[i].onFrame(animation[i], timestamp);
163
+ res.push(animation[i].current);
164
+ });
165
+
166
+ animation.current = toRGBA(res as ParsedColorArray);
167
+ return finished;
168
+ };
169
+
170
+ animation.onStart = (
171
+ animation: Animation<AnimationObject>,
172
+ value: number,
173
+ timestamp: Timestamp,
174
+ previousAnimation: Animation<AnimationObject>
175
+ ) => {
176
+ if (isColor(value)) {
177
+ colorOnStart(animation, value, timestamp, previousAnimation);
178
+ animation.onFrame = colorOnFrame;
179
+ return;
180
+ } else if (typeof value === 'string') {
181
+ prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);
182
+ animation.onFrame = prefNumberSuffOnFrame;
183
+ return;
184
+ }
185
+ baseOnStart(animation, value, timestamp, previousAnimation);
186
+ };
187
+ }
188
+
189
+ type AnimationToDecoration<
190
+ T extends AnimationObject | StyleLayoutAnimation
191
+ > = T extends StyleLayoutAnimation
192
+ ? Record<string, unknown>
193
+ : T extends DelayAnimation
194
+ ? NextAnimation<DelayAnimation>
195
+ : T extends RepeatAnimation
196
+ ? NextAnimation<RepeatAnimation>
197
+ : T extends SequenceAnimation
198
+ ? NextAnimation<SequenceAnimation>
199
+ : PrimitiveValue | T;
200
+
201
+ export function defineAnimation<
202
+ T extends AnimationObject | StyleLayoutAnimation
203
+ >(starting: AnimationToDecoration<T>, factory: () => T): T {
204
+ 'worklet';
205
+ if (IN_STYLE_UPDATER) {
206
+ return starting as T;
207
+ }
208
+ const create = () => {
209
+ 'worklet';
210
+ const animation = factory();
211
+ decorateAnimation<T>(animation);
212
+ return animation;
213
+ };
214
+
215
+ if (_WORKLET || !NativeReanimatedModule.native) {
216
+ return create();
217
+ }
218
+ // @ts-ignore: eslint-disable-line
219
+ return create;
220
+ }
221
+
222
+ export function cancelAnimation<T>(sharedValue: SharedValue<T>): void {
223
+ 'worklet';
224
+ // setting the current value cancels the animation if one is currently running
225
+ sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign
226
+ }
227
+
228
+ // TODO it should work only if there was no animation before.
229
+ export function withStartValue(
230
+ startValue: PrimitiveValue,
231
+ animation: NextAnimation<AnimationObject>
232
+ ): Animation<AnimationObject> {
233
+ 'worklet';
234
+ return defineAnimation(startValue, () => {
235
+ 'worklet';
236
+ if (!_WORKLET && typeof animation === 'function') {
237
+ animation = animation();
238
+ }
239
+ (animation as Animation<AnimationObject>).current = startValue;
240
+ return animation as Animation<AnimationObject>;
241
+ });
242
+ }
@@ -0,0 +1,81 @@
1
+ import {
2
+ PerpectiveTransform,
3
+ RotateTransform,
4
+ RotateXTransform,
5
+ RotateYTransform,
6
+ RotateZTransform,
7
+ ScaleTransform,
8
+ ScaleXTransform,
9
+ ScaleYTransform,
10
+ TranslateXTransform,
11
+ TranslateYTransform,
12
+ SkewXTransform,
13
+ SkewYTransform,
14
+ MatrixTransform,
15
+ ViewStyle,
16
+ TextStyle,
17
+ } from 'react-native';
18
+ import { Animation, AnimationObject } from './animation/commonTypes';
19
+ import { Context } from './hook/commonTypes';
20
+
21
+ export type TransformProperty =
22
+ | PerpectiveTransform
23
+ | RotateTransform
24
+ | RotateXTransform
25
+ | RotateYTransform
26
+ | RotateZTransform
27
+ | ScaleTransform
28
+ | ScaleXTransform
29
+ | ScaleYTransform
30
+ | TranslateXTransform
31
+ | TranslateYTransform
32
+ | SkewXTransform
33
+ | SkewYTransform
34
+ | MatrixTransform;
35
+
36
+ export interface StyleProps extends ViewStyle, TextStyle {
37
+ originX?: number;
38
+ originY?: number;
39
+ [key: string]: any;
40
+ }
41
+
42
+ export interface AnimatedStyle
43
+ extends Record<string, Animation<AnimationObject>> {
44
+ [key: string]: any;
45
+ transform?: Array<Record<string, Animation<AnimationObject>>>;
46
+ }
47
+ export interface SharedValue<T> {
48
+ value: T;
49
+ }
50
+
51
+ export interface WorkletFunction {
52
+ _closure?: Context;
53
+ __workletHash?: number;
54
+ __optimalization?: number;
55
+ __worklet?: boolean;
56
+ }
57
+
58
+ export interface BasicWorkletFunction<T> extends WorkletFunction {
59
+ (): T;
60
+ }
61
+
62
+ export interface NativeEvent<T> {
63
+ nativeEvent: T;
64
+ }
65
+ export interface ComplexWorkletFunction<A extends any[], R>
66
+ extends WorkletFunction {
67
+ (...args: A): R;
68
+ }
69
+
70
+ export interface NestedObject<T> {
71
+ [key: string]: NestedObjectValues<T>;
72
+ }
73
+
74
+ export type NestedObjectValues<T> =
75
+ | T
76
+ | Array<NestedObjectValues<T>>
77
+ | NestedObject<T>;
78
+
79
+ export interface AdapterWorkletFunction extends WorkletFunction {
80
+ (value: NestedObject<string | number | AnimationObject>): void;
81
+ }