react-native-reanimated 2.8.0 → 3.0.0-rc.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 (381) hide show
  1. package/Common/cpp/Fabric/FabricUtils.cpp +128 -0
  2. package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +197 -0
  3. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +311 -6
  4. package/Common/cpp/Registries/EventHandlerRegistry.cpp +14 -1
  5. package/Common/cpp/Registries/NewestShadowNodesRegistry.cpp +68 -0
  6. package/Common/cpp/SharedItems/ShareableValue.cpp +18 -0
  7. package/Common/cpp/Tools/Mapper.cpp +23 -4
  8. package/Common/cpp/Tools/RuntimeDecorator.cpp +92 -32
  9. package/Common/cpp/Tools/Scheduler.cpp +4 -0
  10. package/Common/cpp/headers/Fabric/FabricUtils.h +78 -0
  11. package/Common/cpp/headers/Fabric/ReanimatedUIManagerBinding.h +46 -0
  12. package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +72 -2
  13. package/Common/cpp/headers/Registries/EventHandlerRegistry.h +8 -0
  14. package/Common/cpp/headers/Registries/NewestShadowNodesRegistry.h +41 -0
  15. package/Common/cpp/headers/SharedItems/SharedParent.h +3 -0
  16. package/Common/cpp/headers/SharedItems/ValueWrapper.h +25 -0
  17. package/Common/cpp/headers/SpecTools/ErrorHandler.h +5 -0
  18. package/Common/cpp/headers/Tools/Mapper.h +1 -1
  19. package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +43 -8
  20. package/Common/cpp/headers/Tools/RuntimeDecorator.h +8 -3
  21. package/README.md +4 -0
  22. package/RNReanimated.podspec +22 -11
  23. package/android/CMakeLists.txt +139 -27
  24. package/android/build.gradle +86 -209
  25. package/android/local.properties +1 -0
  26. package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +310 -0
  27. package/android/src/fabric/java/com/swmansion/reanimated/ReaCompatibility.java +25 -0
  28. package/android/src/main/cpp/NativeProxy.cpp +178 -33
  29. package/android/src/main/cpp/headers/NativeProxy.h +43 -7
  30. package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +13 -245
  31. package/android/src/main/java/com/swmansion/reanimated/ReanimatedModule.java +0 -125
  32. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +2 -1
  33. package/android/src/{main → paper}/java/com/swmansion/reanimated/NativeProxy.java +15 -2
  34. package/android/src/paper/java/com/swmansion/reanimated/ReaCompatibility.java +17 -0
  35. package/ios/Fabric/REAInitializerRCTFabricSurface.h +12 -0
  36. package/ios/Fabric/REAInitializerRCTFabricSurface.mm +73 -0
  37. package/ios/REAEventDispatcher.m +0 -1
  38. package/ios/REAModule.h +10 -1
  39. package/ios/REAModule.mm +284 -0
  40. package/ios/REANodesManager.h +27 -51
  41. package/ios/{REANodesManager.m → REANodesManager.mm} +91 -223
  42. package/ios/native/NativeProxy.mm +144 -17
  43. package/ios/native/REAInitializer.mm +12 -4
  44. package/ios/native/UIResponder+Reanimated.h +3 -1
  45. package/ios/native/UIResponder+Reanimated.mm +3 -1
  46. package/lib/Animated.js +0 -4
  47. package/lib/createAnimatedComponent.js +30 -169
  48. package/lib/index.js +0 -4
  49. package/lib/reanimated2/Easing.js +0 -42
  50. package/lib/reanimated2/NativeMethods.js +20 -3
  51. package/lib/reanimated2/UpdateProps.js +25 -10
  52. package/lib/reanimated2/core.js +4 -1
  53. package/lib/reanimated2/fabricUtils.js +18 -0
  54. package/lib/reanimated2/globals.d.ts +17 -1
  55. package/lib/reanimated2/hook/useAnimatedRef.js +6 -2
  56. package/lib/reanimated2/hook/utils.js +0 -5
  57. package/lib/reanimated2/interpolateColor.js +5 -2
  58. package/lib/reanimated2/interpolation.js +0 -15
  59. package/lib/reanimated2/js-reanimated/index.js +3 -0
  60. package/lib/types/{lib/ConfigHelper.d.ts → ConfigHelper.d.ts} +0 -0
  61. package/lib/types/{lib/ReanimatedEventEmitter.d.ts → ReanimatedEventEmitter.d.ts} +0 -0
  62. package/lib/types/{lib/ReanimatedModule.d.ts → ReanimatedModule.d.ts} +0 -0
  63. package/lib/types/{lib/ReanimatedModule.macos.d.ts → ReanimatedModule.macos.d.ts} +0 -0
  64. package/lib/types/{lib/ReanimatedModule.native.d.ts → ReanimatedModule.native.d.ts} +0 -0
  65. package/lib/types/{lib/ReanimatedModule.windows.d.ts → ReanimatedModule.windows.d.ts} +0 -0
  66. package/lib/types/{lib/ReanimatedModuleCompat.d.ts → ReanimatedModuleCompat.d.ts} +0 -0
  67. package/lib/types/{lib/createAnimatedComponent.d.ts → createAnimatedComponent.d.ts} +0 -0
  68. package/lib/types/{lib/reanimated2 → reanimated2}/Bezier.d.ts +0 -0
  69. package/lib/types/{lib/reanimated2 → reanimated2}/Colors.d.ts +0 -0
  70. package/lib/types/{lib/reanimated2 → reanimated2}/Easing.d.ts +0 -0
  71. package/lib/types/{lib/reanimated2 → reanimated2}/NativeMethods.d.ts +2 -1
  72. package/lib/types/{lib/reanimated2 → reanimated2}/NativeReanimated/NativeReanimated.d.ts +0 -0
  73. package/lib/types/{lib/reanimated2 → reanimated2}/NativeReanimated/index.d.ts +0 -0
  74. package/lib/types/{lib/reanimated2 → reanimated2}/PlatformChecker.d.ts +0 -0
  75. package/lib/types/{lib/reanimated2 → reanimated2}/PropAdapters.d.ts +0 -0
  76. package/lib/types/{lib/reanimated2 → reanimated2}/UpdateProps.d.ts +0 -0
  77. package/lib/types/{lib/reanimated2 → reanimated2}/ViewDescriptorsSet.d.ts +0 -0
  78. package/lib/types/{lib/reanimated2 → reanimated2}/WorkletEventHandler.d.ts +0 -0
  79. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/MutableValue.d.ts +0 -0
  80. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/NativeReanimated.d.ts +0 -0
  81. package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/NativeReanimated.native.d.ts +0 -0
  82. package/lib/types/{lib/reanimated2 → reanimated2}/animation/commonTypes.d.ts +0 -0
  83. package/lib/types/{lib/reanimated2 → reanimated2}/animation/decay.d.ts +0 -0
  84. package/lib/types/{lib/reanimated2 → reanimated2}/animation/delay.d.ts +0 -0
  85. package/lib/types/{lib/reanimated2 → reanimated2}/animation/index.d.ts +0 -0
  86. package/lib/types/{lib/reanimated2 → reanimated2}/animation/repeat.d.ts +0 -0
  87. package/lib/types/{lib/reanimated2 → reanimated2}/animation/sequence.d.ts +0 -0
  88. package/lib/types/{lib/reanimated2 → reanimated2}/animation/spring.d.ts +0 -0
  89. package/lib/types/{lib/reanimated2 → reanimated2}/animation/styleAnimation.d.ts +0 -0
  90. package/lib/types/{lib/reanimated2 → reanimated2}/animation/timing.d.ts +0 -0
  91. package/lib/types/{lib/reanimated2 → reanimated2}/animation/util.d.ts +0 -0
  92. package/lib/types/{lib/reanimated2 → reanimated2}/commonTypes.d.ts +2 -1
  93. package/lib/types/{lib/reanimated2 → reanimated2}/component/FlatList.d.ts +0 -0
  94. package/lib/types/{lib/reanimated2 → reanimated2}/component/WrappedComponents.d.ts +0 -0
  95. package/lib/types/{lib/reanimated2 → reanimated2}/component/index.d.ts +0 -0
  96. package/lib/types/{lib/reanimated2 → reanimated2}/core.d.ts +0 -0
  97. package/lib/types/reanimated2/fabricUtils.d.ts +4 -0
  98. package/lib/types/{lib/reanimated2 → reanimated2}/hook/Hooks.d.ts +0 -0
  99. package/lib/types/{lib/reanimated2 → reanimated2}/hook/commonTypes.d.ts +2 -1
  100. package/lib/types/{lib/reanimated2 → reanimated2}/hook/index.d.ts +1 -1
  101. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedGestureHandler.d.ts +2 -2
  102. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedReaction.d.ts +0 -0
  103. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedRef.d.ts +0 -0
  104. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedScrollHandler.d.ts +2 -2
  105. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedSensor.d.ts +0 -0
  106. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedStyle.d.ts +0 -0
  107. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useDerivedValue.d.ts +0 -0
  108. package/lib/types/{lib/reanimated2 → reanimated2}/hook/useSharedValue.d.ts +0 -0
  109. package/lib/types/{lib/reanimated2 → reanimated2}/hook/utils.d.ts +2 -2
  110. package/lib/types/{lib/reanimated2 → reanimated2}/index.d.ts +0 -0
  111. package/lib/types/{lib/reanimated2 → reanimated2}/interpolateColor.d.ts +5 -0
  112. package/lib/types/{lib/reanimated2 → reanimated2}/interpolation.d.ts +1 -4
  113. package/lib/types/{lib/reanimated2 → reanimated2}/jestUtils.d.ts +0 -0
  114. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/JSReanimated.d.ts +0 -0
  115. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/Mapper.d.ts +0 -0
  116. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/MapperRegistry.d.ts +0 -0
  117. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/MutableValue.d.ts +0 -0
  118. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/commonTypes.d.ts +0 -0
  119. package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/index.d.ts +0 -0
  120. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/LayoutAnimationRepository.d.ts +0 -0
  121. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/BaseAnimationBuilder.d.ts +0 -0
  122. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/ComplexAnimationBuilder.d.ts +0 -0
  123. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/Keyframe.d.ts +0 -0
  124. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/commonTypes.d.ts +0 -0
  125. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/index.d.ts +0 -0
  126. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Bounce.d.ts +0 -0
  127. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Default.d.ts +0 -0
  128. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Fade.d.ts +0 -0
  129. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Flip.d.ts +0 -0
  130. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Lightspeed.d.ts +0 -0
  131. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Pinwheel.d.ts +0 -0
  132. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Roll.d.ts +0 -0
  133. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Rotate.d.ts +0 -0
  134. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Slide.d.ts +0 -0
  135. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Stretch.d.ts +0 -0
  136. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Zoom.d.ts +0 -0
  137. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/index.d.ts +0 -0
  138. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/CurvedTransition.d.ts +0 -0
  139. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/EntryExitTransition.d.ts +0 -0
  140. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/FadingTransition.d.ts +0 -0
  141. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/JumpingTransition.d.ts +0 -0
  142. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/LinearTransition.d.ts +0 -0
  143. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/SequencedTransition.d.ts +0 -0
  144. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/index.d.ts +0 -0
  145. package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/index.d.ts +0 -0
  146. package/lib/types/{lib/reanimated2 → reanimated2}/mock.d.ts +0 -0
  147. package/lib/types/{lib/reanimated2 → reanimated2}/platform-specific/RNRenderer.d.ts +0 -0
  148. package/lib/types/{lib/reanimated2 → reanimated2}/platform-specific/RNRenderer.web.d.ts +0 -0
  149. package/lib/types/{lib/reanimated2 → reanimated2}/utils.d.ts +0 -0
  150. package/lib/types/{lib/setAndForwardRef.d.ts → setAndForwardRef.d.ts} +0 -0
  151. package/package.json +7 -5
  152. package/plugin.js +4 -1
  153. package/src/Animated.js +0 -4
  154. package/src/createAnimatedComponent.tsx +37 -197
  155. package/src/reanimated2/Easing.ts +0 -53
  156. package/src/reanimated2/NativeMethods.ts +39 -7
  157. package/src/reanimated2/UpdateProps.ts +38 -19
  158. package/src/reanimated2/commonTypes.ts +4 -1
  159. package/src/reanimated2/component/FlatList.tsx +8 -5
  160. package/src/reanimated2/core.ts +7 -1
  161. package/src/reanimated2/fabricUtils.ts +27 -0
  162. package/src/reanimated2/globals.d.ts +17 -1
  163. package/src/reanimated2/hook/commonTypes.ts +4 -2
  164. package/src/reanimated2/hook/index.ts +1 -1
  165. package/src/reanimated2/hook/useAnimatedGestureHandler.ts +2 -2
  166. package/src/reanimated2/hook/useAnimatedRef.ts +8 -3
  167. package/src/reanimated2/hook/useAnimatedScrollHandler.ts +2 -2
  168. package/src/reanimated2/hook/utils.ts +2 -11
  169. package/src/reanimated2/interpolateColor.ts +6 -2
  170. package/src/reanimated2/interpolation.ts +1 -26
  171. package/src/reanimated2/js-reanimated/index.ts +5 -0
  172. package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  173. package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
  174. package/android/.gradle/7.2/executionHistory/executionHistory.bin +0 -0
  175. package/android/.gradle/7.2/executionHistory/executionHistory.lock +0 -0
  176. package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
  177. package/android/.gradle/7.2/fileHashes/fileHashes.bin +0 -0
  178. package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
  179. package/android/.gradle/7.2/fileHashes/resourceHashesCache.bin +0 -0
  180. package/android/.gradle/7.2/gc.properties +0 -0
  181. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  182. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  183. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  184. package/android/.gradle/checksums/checksums.lock +0 -0
  185. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  186. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  187. package/android/.gradle/vcs-1/gc.properties +0 -0
  188. package/android/react-native-reanimated-64-hermes.aar +0 -0
  189. package/android/react-native-reanimated-64-jsc.aar +0 -0
  190. package/android/react-native-reanimated-65-hermes.aar +0 -0
  191. package/android/react-native-reanimated-65-jsc.aar +0 -0
  192. package/android/react-native-reanimated-66-hermes.aar +0 -0
  193. package/android/react-native-reanimated-66-jsc.aar +0 -0
  194. package/android/react-native-reanimated-67-hermes.aar +0 -0
  195. package/android/react-native-reanimated-67-jsc.aar +0 -0
  196. package/android/react-native-reanimated-68-hermes.aar +0 -0
  197. package/android/react-native-reanimated-68-jsc.aar +0 -0
  198. package/android/src/main/java/com/swmansion/reanimated/UpdateContext.java +0 -11
  199. package/android/src/main/java/com/swmansion/reanimated/nodes/AlwaysNode.java +0 -29
  200. package/android/src/main/java/com/swmansion/reanimated/nodes/BezierNode.java +0 -87
  201. package/android/src/main/java/com/swmansion/reanimated/nodes/BlockNode.java +0 -24
  202. package/android/src/main/java/com/swmansion/reanimated/nodes/CallFuncNode.java +0 -49
  203. package/android/src/main/java/com/swmansion/reanimated/nodes/ClockNode.java +0 -38
  204. package/android/src/main/java/com/swmansion/reanimated/nodes/ClockOpNode.java +0 -73
  205. package/android/src/main/java/com/swmansion/reanimated/nodes/ConcatNode.java +0 -36
  206. package/android/src/main/java/com/swmansion/reanimated/nodes/CondNode.java +0 -41
  207. package/android/src/main/java/com/swmansion/reanimated/nodes/DebugNode.java +0 -33
  208. package/android/src/main/java/com/swmansion/reanimated/nodes/EventNode.java +0 -83
  209. package/android/src/main/java/com/swmansion/reanimated/nodes/FinalNode.java +0 -5
  210. package/android/src/main/java/com/swmansion/reanimated/nodes/FunctionNode.java +0 -20
  211. package/android/src/main/java/com/swmansion/reanimated/nodes/JSCallNode.java +0 -41
  212. package/android/src/main/java/com/swmansion/reanimated/nodes/Node.java +0 -139
  213. package/android/src/main/java/com/swmansion/reanimated/nodes/NoopNode.java +0 -37
  214. package/android/src/main/java/com/swmansion/reanimated/nodes/OperatorNode.java +0 -377
  215. package/android/src/main/java/com/swmansion/reanimated/nodes/ParamNode.java +0 -71
  216. package/android/src/main/java/com/swmansion/reanimated/nodes/PropsNode.java +0 -153
  217. package/android/src/main/java/com/swmansion/reanimated/nodes/SetNode.java +0 -32
  218. package/android/src/main/java/com/swmansion/reanimated/nodes/StyleNode.java +0 -40
  219. package/android/src/main/java/com/swmansion/reanimated/nodes/TransformNode.java +0 -84
  220. package/android/src/main/java/com/swmansion/reanimated/nodes/ValueNode.java +0 -40
  221. package/android/src/main/java/com/swmansion/reanimated/transitions/ChangeTransition.java +0 -84
  222. package/android/src/main/java/com/swmansion/reanimated/transitions/SaneSidePropagation.java +0 -25
  223. package/android/src/main/java/com/swmansion/reanimated/transitions/Scale.java +0 -86
  224. package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionModule.java +0 -41
  225. package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionUtils.java +0 -161
  226. package/ios/Nodes/REAAlwaysNode.h +0 -4
  227. package/ios/Nodes/REAAlwaysNode.m +0 -35
  228. package/ios/Nodes/REABezierNode.h +0 -5
  229. package/ios/Nodes/REABezierNode.m +0 -103
  230. package/ios/Nodes/REABlockNode.h +0 -5
  231. package/ios/Nodes/REABlockNode.m +0 -25
  232. package/ios/Nodes/REACallFuncNode.h +0 -6
  233. package/ios/Nodes/REACallFuncNode.m +0 -69
  234. package/ios/Nodes/REAClockNodes.h +0 -19
  235. package/ios/Nodes/REAClockNodes.m +0 -118
  236. package/ios/Nodes/REAConcatNode.h +0 -5
  237. package/ios/Nodes/REAConcatNode.m +0 -32
  238. package/ios/Nodes/REACondNode.h +0 -5
  239. package/ios/Nodes/REACondNode.m +0 -36
  240. package/ios/Nodes/READebugNode.h +0 -5
  241. package/ios/Nodes/READebugNode.m +0 -30
  242. package/ios/Nodes/REAEventNode.h +0 -8
  243. package/ios/Nodes/REAEventNode.m +0 -35
  244. package/ios/Nodes/REAFunctionNode.h +0 -6
  245. package/ios/Nodes/REAFunctionNode.m +0 -24
  246. package/ios/Nodes/REAJSCallNode.h +0 -5
  247. package/ios/Nodes/REAJSCallNode.m +0 -30
  248. package/ios/Nodes/REANode.h +0 -40
  249. package/ios/Nodes/REANode.m +0 -155
  250. package/ios/Nodes/REAOperatorNode.h +0 -5
  251. package/ios/Nodes/REAOperatorNode.m +0 -114
  252. package/ios/Nodes/REAParamNode.h +0 -10
  253. package/ios/Nodes/REAParamNode.m +0 -79
  254. package/ios/Nodes/REAPropsNode.h +0 -9
  255. package/ios/Nodes/REAPropsNode.m +0 -96
  256. package/ios/Nodes/REASetNode.h +0 -5
  257. package/ios/Nodes/REASetNode.m +0 -34
  258. package/ios/Nodes/REAStyleNode.h +0 -5
  259. package/ios/Nodes/REAStyleNode.m +0 -27
  260. package/ios/Nodes/REATransformNode.h +0 -5
  261. package/ios/Nodes/REATransformNode.m +0 -36
  262. package/ios/Nodes/REAValueNode.h +0 -9
  263. package/ios/Nodes/REAValueNode.m +0 -26
  264. package/ios/REAModule.m +0 -184
  265. package/ios/Transitioning/RCTConvert+REATransition.h +0 -11
  266. package/ios/Transitioning/RCTConvert+REATransition.m +0 -53
  267. package/ios/Transitioning/REAAllTransitions.h +0 -26
  268. package/ios/Transitioning/REAAllTransitions.m +0 -296
  269. package/ios/Transitioning/REATransition.h +0 -64
  270. package/ios/Transitioning/REATransition.m +0 -210
  271. package/ios/Transitioning/REATransitionAnimation.h +0 -17
  272. package/ios/Transitioning/REATransitionAnimation.m +0 -79
  273. package/ios/Transitioning/REATransitionManager.h +0 -9
  274. package/ios/Transitioning/REATransitionManager.m +0 -60
  275. package/ios/Transitioning/REATransitionValues.h +0 -15
  276. package/ios/Transitioning/REATransitionValues.m +0 -25
  277. package/lib/reanimated1/Easing.js +0 -231
  278. package/lib/reanimated1/SpringConfig.js +0 -79
  279. package/lib/reanimated1/Transitioning.js +0 -158
  280. package/lib/reanimated1/animations/Animation.js +0 -32
  281. package/lib/reanimated1/animations/SpringUtils.js +0 -199
  282. package/lib/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
  283. package/lib/reanimated1/animations/decay.js +0 -54
  284. package/lib/reanimated1/animations/spring.js +0 -198
  285. package/lib/reanimated1/animations/timing.js +0 -74
  286. package/lib/reanimated1/base.js +0 -13
  287. package/lib/reanimated1/core/AnimatedAlways.js +0 -33
  288. package/lib/reanimated1/core/AnimatedBezier.js +0 -150
  289. package/lib/reanimated1/core/AnimatedBlock.js +0 -52
  290. package/lib/reanimated1/core/AnimatedCall.js +0 -55
  291. package/lib/reanimated1/core/AnimatedCallFunc.js +0 -72
  292. package/lib/reanimated1/core/AnimatedClock.js +0 -90
  293. package/lib/reanimated1/core/AnimatedClockTest.js +0 -22
  294. package/lib/reanimated1/core/AnimatedCode.js +0 -32
  295. package/lib/reanimated1/core/AnimatedConcat.js +0 -32
  296. package/lib/reanimated1/core/AnimatedCond.js +0 -57
  297. package/lib/reanimated1/core/AnimatedDebug.js +0 -62
  298. package/lib/reanimated1/core/AnimatedEvent.js +0 -126
  299. package/lib/reanimated1/core/AnimatedFunction.js +0 -55
  300. package/lib/reanimated1/core/AnimatedNode.js +0 -223
  301. package/lib/reanimated1/core/AnimatedOperator.js +0 -103
  302. package/lib/reanimated1/core/AnimatedParam.js +0 -88
  303. package/lib/reanimated1/core/AnimatedProps.js +0 -108
  304. package/lib/reanimated1/core/AnimatedSet.js +0 -38
  305. package/lib/reanimated1/core/AnimatedStartClock.js +0 -30
  306. package/lib/reanimated1/core/AnimatedStopClock.js +0 -30
  307. package/lib/reanimated1/core/AnimatedStyle.js +0 -78
  308. package/lib/reanimated1/core/AnimatedTransform.js +0 -78
  309. package/lib/reanimated1/core/AnimatedValue.js +0 -38
  310. package/lib/reanimated1/core/Core.test.js +0 -30
  311. package/lib/reanimated1/core/InternalAnimatedValue.js +0 -87
  312. package/lib/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
  313. package/lib/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
  314. package/lib/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
  315. package/lib/reanimated1/derived/acc.js +0 -11
  316. package/lib/reanimated1/derived/color.js +0 -47
  317. package/lib/reanimated1/derived/diff.js +0 -16
  318. package/lib/reanimated1/derived/diffClamp.js +0 -11
  319. package/lib/reanimated1/derived/evaluateOnce.js +0 -35
  320. package/lib/reanimated1/derived/index.js +0 -8
  321. package/lib/reanimated1/derived/interpolate.js +0 -152
  322. package/lib/reanimated1/derived/interpolateColors.js +0 -62
  323. package/lib/reanimated1/derived/onChange.js +0 -14
  324. package/lib/reanimated1/derived/useCode.js +0 -41
  325. package/lib/reanimated1/index.js +0 -53
  326. package/lib/reanimated1/operators.js +0 -35
  327. package/lib/reanimated1/useValue.js +0 -10
  328. package/lib/reanimated1/val.js +0 -3
  329. package/lib/types/react-native-reanimated-tests.d.ts +0 -1
  330. package/src/reanimated1/Easing.js +0 -231
  331. package/src/reanimated1/SpringConfig.js +0 -79
  332. package/src/reanimated1/Transitioning.js +0 -158
  333. package/src/reanimated1/animations/Animation.js +0 -32
  334. package/src/reanimated1/animations/SpringUtils.js +0 -199
  335. package/src/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
  336. package/src/reanimated1/animations/decay.js +0 -54
  337. package/src/reanimated1/animations/spring.js +0 -198
  338. package/src/reanimated1/animations/timing.js +0 -74
  339. package/src/reanimated1/base.js +0 -13
  340. package/src/reanimated1/core/AnimatedAlways.js +0 -33
  341. package/src/reanimated1/core/AnimatedBezier.js +0 -150
  342. package/src/reanimated1/core/AnimatedBlock.js +0 -52
  343. package/src/reanimated1/core/AnimatedCall.js +0 -55
  344. package/src/reanimated1/core/AnimatedCallFunc.js +0 -72
  345. package/src/reanimated1/core/AnimatedClock.js +0 -90
  346. package/src/reanimated1/core/AnimatedClockTest.js +0 -22
  347. package/src/reanimated1/core/AnimatedCode.js +0 -32
  348. package/src/reanimated1/core/AnimatedConcat.js +0 -32
  349. package/src/reanimated1/core/AnimatedCond.js +0 -57
  350. package/src/reanimated1/core/AnimatedDebug.js +0 -62
  351. package/src/reanimated1/core/AnimatedEvent.js +0 -126
  352. package/src/reanimated1/core/AnimatedFunction.js +0 -55
  353. package/src/reanimated1/core/AnimatedNode.js +0 -223
  354. package/src/reanimated1/core/AnimatedOperator.js +0 -103
  355. package/src/reanimated1/core/AnimatedParam.js +0 -88
  356. package/src/reanimated1/core/AnimatedProps.js +0 -108
  357. package/src/reanimated1/core/AnimatedSet.js +0 -38
  358. package/src/reanimated1/core/AnimatedStartClock.js +0 -30
  359. package/src/reanimated1/core/AnimatedStopClock.js +0 -30
  360. package/src/reanimated1/core/AnimatedStyle.js +0 -78
  361. package/src/reanimated1/core/AnimatedTransform.js +0 -78
  362. package/src/reanimated1/core/AnimatedValue.js +0 -38
  363. package/src/reanimated1/core/Core.test.js +0 -30
  364. package/src/reanimated1/core/InternalAnimatedValue.js +0 -87
  365. package/src/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
  366. package/src/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
  367. package/src/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
  368. package/src/reanimated1/derived/acc.js +0 -11
  369. package/src/reanimated1/derived/color.js +0 -47
  370. package/src/reanimated1/derived/diff.js +0 -16
  371. package/src/reanimated1/derived/diffClamp.js +0 -11
  372. package/src/reanimated1/derived/evaluateOnce.js +0 -35
  373. package/src/reanimated1/derived/index.js +0 -8
  374. package/src/reanimated1/derived/interpolate.js +0 -152
  375. package/src/reanimated1/derived/interpolateColors.js +0 -62
  376. package/src/reanimated1/derived/onChange.js +0 -14
  377. package/src/reanimated1/derived/useCode.js +0 -41
  378. package/src/reanimated1/index.js +0 -53
  379. package/src/reanimated1/operators.js +0 -35
  380. package/src/reanimated1/useValue.js +0 -10
  381. package/src/reanimated1/val.js +0 -3
@@ -1,90 +0,0 @@
1
- import InternalAnimatedValue from './InternalAnimatedValue';
2
- import AnimatedNode from './AnimatedNode';
3
- import { val } from '../val';
4
-
5
- class AnimatedMainClock extends InternalAnimatedValue {
6
- _frameCallback;
7
-
8
- constructor() {
9
- super({ type: 'MAIN_CLOCK' });
10
- }
11
-
12
- __onEvaluate() {
13
- return +new Date();
14
- }
15
-
16
- _runFrame = () => {
17
- this._updateValue(0);
18
- if (this.__children.length > 0) {
19
- this._frameCallback = requestAnimationFrame(this._runFrame);
20
- }
21
- };
22
-
23
- __attach() {
24
- super.__attach();
25
- if (!this._frameCallback) {
26
- this._frameCallback = requestAnimationFrame(this._runFrame);
27
- }
28
- }
29
-
30
- __detach() {
31
- if (this._frameCallback) {
32
- cancelAnimationFrame(this._frameCallback);
33
- this._frameCallback = null;
34
- }
35
- super.__detach();
36
- }
37
- }
38
-
39
- const mainClock = new AnimatedMainClock();
40
-
41
- export default class AnimatedClock extends AnimatedNode {
42
- _started;
43
- _attached;
44
-
45
- constructor() {
46
- super({ type: 'clock' });
47
- }
48
-
49
- toString() {
50
- return `AnimatedClock, id: ${this.__nodeID}`;
51
- }
52
-
53
- __onEvaluate() {
54
- return val(mainClock);
55
- }
56
-
57
- __attach() {
58
- super.__attach();
59
- if (this._started && !this._attached) {
60
- mainClock.__addChild(this);
61
- }
62
- this._attached = true;
63
- }
64
-
65
- __detach() {
66
- if (this._started && this._attached) {
67
- mainClock.__removeChild(this);
68
- }
69
- this._attached = false;
70
- super.__detach();
71
- }
72
-
73
- start() {
74
- if (!this._started && this._attached) {
75
- mainClock.__addChild(this);
76
- }
77
- this._started = true;
78
- }
79
-
80
- stop() {
81
- if (this._started && this._attached) {
82
- mainClock.__removeChild(this);
83
- }
84
- this._started = false;
85
- }
86
-
87
- isStarted() {
88
- return this._started;
89
- }
90
- }
@@ -1,22 +0,0 @@
1
- import AnimatedNode from './AnimatedNode';
2
-
3
- class AnimatedClockTest extends AnimatedNode {
4
- _clockNode;
5
-
6
- constructor(clockNode) {
7
- super({ type: 'clockTest', clock: clockNode });
8
- this._clockNode = clockNode;
9
- }
10
-
11
- toString() {
12
- return `AnimatedClockTest, id: ${this.__nodeID}`;
13
- }
14
-
15
- __onEvaluate() {
16
- return this._clockNode.isStarted() ? 1 : 0;
17
- }
18
- }
19
-
20
- export function createAnimatedClockTest(clock) {
21
- return new AnimatedClockTest(clock);
22
- }
@@ -1,32 +0,0 @@
1
- import useCode from '../derived/useCode';
2
- import AnimatedNode from './AnimatedNode';
3
-
4
- function assertNodesNotNull(code, children, exec) {
5
- if (!code) {
6
- const error = !children
7
- ? `Got "${typeof children}" type passed to children`
8
- : `Got "${typeof exec}" type passed to exec`;
9
-
10
- throw new Error(
11
- `<Animated.Code /> expects the 'exec' prop or children to be an animated node or a function returning an animated node. ${error}`
12
- );
13
- }
14
- }
15
-
16
- function Code({ exec, children, dependencies }) {
17
- const nodes = children || exec;
18
-
19
- let code = null;
20
- if (nodes instanceof AnimatedNode) {
21
- code = () => nodes;
22
- } else if (typeof nodes === 'function') {
23
- code = nodes;
24
- }
25
-
26
- assertNodesNotNull(code, children, exec);
27
-
28
- useCode(code, dependencies);
29
- return null;
30
- }
31
-
32
- export default Code;
@@ -1,32 +0,0 @@
1
- import invariant from 'invariant';
2
- import { adapt } from '../core/AnimatedBlock';
3
- import AnimatedNode from './AnimatedNode';
4
- import { val } from '../val';
5
-
6
- class AnimatedConcat extends AnimatedNode {
7
- constructor(input) {
8
- invariant(
9
- input.every(
10
- (el) =>
11
- el instanceof AnimatedNode ||
12
- typeof el === 'number' ||
13
- typeof el === 'string'
14
- ),
15
- `Reanimated: Animated.concat node arguments should be of type AnimatedNode or String or Number. One or more of them are not of that type. Node: ${input}`
16
- );
17
- super({ type: 'concat', input }, input);
18
- this._input = input;
19
- }
20
-
21
- __onEvaluate() {
22
- return this._input.reduce((prev, current) => prev + val(current), '');
23
- }
24
-
25
- toString() {
26
- return `AnimatedConcat, id: ${this.__nodeID}`;
27
- }
28
- }
29
-
30
- export function createAnimatedConcat(...args) {
31
- return new AnimatedConcat(args.map(adapt));
32
- }
@@ -1,57 +0,0 @@
1
- import invariant from 'invariant';
2
- import { adapt } from '../core/AnimatedBlock';
3
- import { val } from '../val';
4
- import AnimatedNode from './AnimatedNode';
5
-
6
- class AnimatedCond extends AnimatedNode {
7
- _condition;
8
- _ifBlock;
9
- _elseBlock;
10
-
11
- constructor(condition, ifBlock, elseBlock) {
12
- invariant(
13
- condition instanceof AnimatedNode,
14
- `Reanimated: Animated.cond node first argument should be of type AnimatedNode but got ${condition}`
15
- );
16
- invariant(
17
- ifBlock instanceof AnimatedNode,
18
- `Reanimated: Animated.cond node second argument should be of type AnimatedNode but got ${ifBlock}`
19
- );
20
- invariant(
21
- elseBlock instanceof AnimatedNode || elseBlock === undefined,
22
- `Reanimated: Animated.cond node third argument should be of type AnimatedNode or should be undefined but got ${elseBlock}`
23
- );
24
- super(
25
- {
26
- type: 'cond',
27
- cond: condition,
28
- ifBlock,
29
- elseBlock,
30
- },
31
- [condition, ifBlock, elseBlock]
32
- );
33
- this._condition = condition;
34
- this._ifBlock = ifBlock;
35
- this._elseBlock = elseBlock;
36
- }
37
-
38
- toString() {
39
- return `AnimatedCond, id: ${this.__nodeID}`;
40
- }
41
-
42
- __onEvaluate() {
43
- if (val(this._condition)) {
44
- return val(this._ifBlock);
45
- } else {
46
- return this._elseBlock !== undefined ? val(this._elseBlock) : undefined;
47
- }
48
- }
49
- }
50
-
51
- export function createAnimatedCond(cond, ifBlock, elseBlock) {
52
- return new AnimatedCond(
53
- adapt(cond),
54
- adapt(ifBlock),
55
- elseBlock === undefined ? undefined : adapt(elseBlock)
56
- );
57
- }
@@ -1,62 +0,0 @@
1
- import invariant from 'invariant';
2
- import { NativeModules } from 'react-native';
3
- import { val } from '../val';
4
- import { adapt, createAnimatedBlock as block } from './AnimatedBlock';
5
- import { createAnimatedCall as call } from './AnimatedCall';
6
- import AnimatedNode from './AnimatedNode';
7
-
8
- class AnimatedDebug extends AnimatedNode {
9
- _message;
10
- _value;
11
-
12
- constructor(message, value) {
13
- invariant(
14
- typeof message === 'string',
15
- `Reanimated: Animated.debug node first argument should be of type string but got ${message}`
16
- );
17
- invariant(
18
- value instanceof AnimatedNode,
19
- `Reanimated: Animated.debug node second argument should be of type AnimatedNode but got ${value}`
20
- );
21
- super({ type: 'debug', message, value }, [value]);
22
- this._message = message;
23
- this._value = value;
24
- }
25
-
26
- toString() {
27
- return `AnimatedDebug, id: ${this.__nodeID}`;
28
- }
29
-
30
- __onEvaluate() {
31
- const value = val(this._value);
32
- console.log(this._message, value);
33
- return value;
34
- }
35
- }
36
-
37
- export function createAnimatedDebug(message, value) {
38
- if (__DEV__) {
39
- // hack to detect if app is running in remote debugger
40
- // https://stackoverflow.com/questions/39022216
41
- const runningInRemoteDebugger = typeof atob !== 'undefined';
42
-
43
- // read the executionEnvironment off of expo-constants without explicitly
44
- // depending on the package
45
- const runningInExpoShell =
46
- NativeModules.NativeUnimoduleProxy?.modulesConstants?.ExponentConstants
47
- ?.executionEnvironment === 'storeClient';
48
-
49
- if (runningInRemoteDebugger || runningInExpoShell) {
50
- // When running in expo or remote debugger we use JS console.log to output variables
51
- // otherwise we output to the native console using native debug node
52
- return block([
53
- call([value], ([a]) => console.log(`${message} ${a}`)),
54
- value,
55
- ]);
56
- } else {
57
- return new AnimatedDebug(message, adapt(value));
58
- }
59
- }
60
- // Debugging is disabled in PROD
61
- return value;
62
- }
@@ -1,126 +0,0 @@
1
- import { Platform, findNodeHandle } from 'react-native';
2
- import ReanimatedModule from '../../ReanimatedModule';
3
-
4
- import AnimatedNode from './AnimatedNode';
5
- import InternalAnimatedValue from './AnimatedValue';
6
- import { createAnimatedAlways } from './AnimatedAlways';
7
-
8
- import invariant from 'invariant';
9
- import createEventObjectProxyPolyfill from './createEventObjectProxyPolyfill';
10
-
11
- function sanitizeArgMapping(argMapping) {
12
- // Find animated values in `argMapping` and create an array representing their
13
- // key path inside the `nativeEvent` object. Ex.: ['contentOffset', 'x'].
14
- const eventMappings = [];
15
- const alwaysNodes = [];
16
-
17
- const getNode = (node) => {
18
- if (
19
- Platform.OS === 'web' ||
20
- Platform.OS === 'windows' ||
21
- Platform.OS === 'macos'
22
- ) {
23
- return node;
24
- }
25
- return node.__nodeID;
26
- };
27
-
28
- const traverse = (value, path) => {
29
- if (value instanceof InternalAnimatedValue) {
30
- eventMappings.push(path.concat(getNode(value)));
31
- } else if (typeof value === 'object' && value.__val) {
32
- eventMappings.push(path.concat(getNode(value.__val)));
33
- } else if (typeof value === 'function') {
34
- const node = new InternalAnimatedValue(0);
35
- alwaysNodes.push(createAnimatedAlways(value(node)));
36
- eventMappings.push(path.concat(getNode(node)));
37
- } else if (typeof value === 'object') {
38
- for (const key in value) {
39
- traverse(value[key], path.concat(key));
40
- }
41
- }
42
- };
43
-
44
- invariant(
45
- argMapping[0] && argMapping[0].nativeEvent,
46
- 'Native driven events only support animated values contained inside `nativeEvent`.'
47
- );
48
-
49
- // Assume that the event containing `nativeEvent` is always the first argument.
50
- const ev = argMapping[0].nativeEvent;
51
- if (typeof ev === 'object') {
52
- traverse(ev, []);
53
- } else if (typeof ev === 'function') {
54
- const proxyHandler = {
55
- get: function (target, name) {
56
- if (name === '__isProxy') {
57
- return true;
58
- }
59
- if (!target[name] && name !== '__val') {
60
- target[name] = new Proxy({}, proxyHandler);
61
- }
62
- return target[name];
63
- },
64
- set: function (target, prop, value) {
65
- if (prop === '__val') {
66
- target[prop] = value;
67
- return true;
68
- }
69
- return false;
70
- },
71
- };
72
-
73
- const proxy =
74
- typeof Proxy === 'function'
75
- ? new Proxy({}, proxyHandler)
76
- : createEventObjectProxyPolyfill();
77
- alwaysNodes.push(createAnimatedAlways(ev(proxy)));
78
- traverse(proxy, []);
79
- }
80
-
81
- return { eventMappings, alwaysNodes };
82
- }
83
-
84
- export default class AnimatedEvent extends AnimatedNode {
85
- constructor(argMapping, _config = {}) {
86
- const { eventMappings, alwaysNodes } = sanitizeArgMapping(argMapping);
87
- super({ type: 'event', argMapping: eventMappings });
88
- this._alwaysNodes = alwaysNodes;
89
- }
90
-
91
- toString() {
92
- return `AnimatedEvent, id: ${this.__nodeID}`;
93
- }
94
-
95
- // The below field is a temporary workaround to make AnimatedEvent object be recognized
96
- // as Animated.event event callback and therefore filtered out from being send over the
97
- // bridge which was causing the object to be frozen in JS.
98
- __isNative = true;
99
-
100
- attachEvent(viewRef, eventName) {
101
- for (let i = 0; i < this._alwaysNodes.length; i++) {
102
- this._alwaysNodes[i].__attach();
103
- }
104
- this.__attach();
105
- const viewTag = findNodeHandle(viewRef);
106
- ReanimatedModule.attachEvent(viewTag, eventName, this.__nodeID);
107
- }
108
-
109
- __onEvaluate() {
110
- return 0;
111
- }
112
-
113
- detachEvent(viewRef, eventName) {
114
- for (let i = 0; i < this._alwaysNodes.length; i++) {
115
- this._alwaysNodes[i].isNativelyInitialized() &&
116
- this._alwaysNodes[i].__detach();
117
- }
118
- const viewTag = findNodeHandle(viewRef);
119
- ReanimatedModule.detachEvent(viewTag, eventName, this.__nodeID);
120
- this.__detach();
121
- }
122
- }
123
-
124
- export function createAnimatedEvent(argMapping, config) {
125
- return new AnimatedEvent(argMapping, config);
126
- }
@@ -1,55 +0,0 @@
1
- import AnimatedNode from './AnimatedNode';
2
- import { createAnimatedCallFunc } from './AnimatedCallFunc';
3
- import { createAnimatedParam } from './AnimatedParam';
4
- import { val } from '../val';
5
- import invariant from 'invariant';
6
-
7
- class AnimatedFunction extends AnimatedNode {
8
- _what;
9
-
10
- constructor(what, ...params) {
11
- invariant(
12
- what instanceof AnimatedNode,
13
- `Reanimated: AnimatedCallFunc 'what' argument should be of type AnimatedNode but got ${what}`
14
- );
15
- super(
16
- {
17
- type: 'func',
18
- what,
19
- },
20
- [what, ...params]
21
- );
22
- this._what = what;
23
- this.__attach();
24
- }
25
-
26
- __onEvaluate() {
27
- return val(this._what);
28
- }
29
-
30
- toString() {
31
- return `AnimatedFunction, id: ${this.__nodeID}`;
32
- }
33
- }
34
-
35
- export function createAnimatedFunction(cb) {
36
- const params = new Array(cb.length);
37
- for (let i = 0; i < params.length; i++) {
38
- params[i] = createAnimatedParam();
39
- }
40
- // eslint-disable-next-line node/no-callback-literal
41
- const what = cb(...params);
42
- const func = new AnimatedFunction(what, ...params);
43
- return (...args) => {
44
- if (args.length !== params.length) {
45
- throw new Error(
46
- 'Parameter mismatch when calling reanimated function. Expected ' +
47
- params.length +
48
- ' parameters, got ' +
49
- args.length +
50
- '.'
51
- );
52
- }
53
- return createAnimatedCallFunc(func, args, params);
54
- };
55
- }
@@ -1,223 +0,0 @@
1
- import ReanimatedModule from '../../ReanimatedModule';
2
- import { Platform } from 'react-native';
3
-
4
- const UPDATED_NODES = [];
5
-
6
- let loopID = 1;
7
- let propUpdatesEnqueued = null;
8
- let nodeCount = 0;
9
- let callID = '';
10
-
11
- export function getCallID() {
12
- return callID;
13
- }
14
-
15
- export function setCallID(nextCallID) {
16
- callID = nextCallID;
17
- }
18
-
19
- function sanitizeConfig(config) {
20
- if (
21
- Platform.OS === 'web' ||
22
- Platform.OS === 'windows' ||
23
- Platform.OS === 'macos' ||
24
- ['undefined', 'string', 'function', 'boolean', 'number'].includes(
25
- typeof config
26
- )
27
- ) {
28
- return config;
29
- } else if (Array.isArray(config)) {
30
- return config.map(sanitizeConfig);
31
- } else if (config instanceof AnimatedNode) {
32
- return config.__nodeID;
33
- } else if (typeof config === 'object') {
34
- const output = {};
35
- for (const property in config) {
36
- if (property in config) {
37
- output[property] = sanitizeConfig(config[property]);
38
- }
39
- }
40
- return output;
41
- }
42
- // unhandled
43
- return config;
44
- }
45
-
46
- function runPropUpdates() {
47
- const visitedNodes = new Set();
48
- const findAndUpdateNodes = (node) => {
49
- if (!node) {
50
- console.warn('findAndUpdateNodes was passed a nullish node');
51
- return;
52
- }
53
-
54
- if (visitedNodes.has(node)) {
55
- return;
56
- } else {
57
- visitedNodes.add(node);
58
- }
59
- if (typeof node.update === 'function') {
60
- node.update();
61
- } else {
62
- const nodes = node.__getChildren();
63
- if (nodes) {
64
- for (let i = 0, l = nodes.length; i < l; i++) {
65
- findAndUpdateNodes(nodes[i]);
66
- }
67
- }
68
- }
69
- };
70
- for (let i = 0; i < UPDATED_NODES.length; i++) {
71
- const node = UPDATED_NODES[i];
72
- findAndUpdateNodes(node);
73
- }
74
- UPDATED_NODES.length = 0; // clear array
75
- propUpdatesEnqueued = null;
76
- loopID += 1;
77
- }
78
-
79
- const scheduleUpdates =
80
- Platform.OS === 'web' ? requestAnimationFrame : setImmediate;
81
-
82
- export default class AnimatedNode {
83
- __nodeID;
84
- __lastLoopID = { '': -1 };
85
- __memoizedValue = { '': null };
86
- __children = [];
87
-
88
- constructor(nodeConfig, inputNodes) {
89
- this.__nodeID = ++nodeCount;
90
- this.__nodeConfig = sanitizeConfig(nodeConfig);
91
- this.__initialized = false;
92
- this.__inputNodes =
93
- inputNodes && inputNodes.filter((node) => node instanceof AnimatedNode);
94
- }
95
-
96
- toString() {
97
- return `AnimatedNode, id: ${this.__nodeID}`;
98
- }
99
-
100
- __attach() {
101
- this.__nativeInitialize();
102
-
103
- const nodes = this.__inputNodes;
104
-
105
- if (nodes) {
106
- for (let i = 0, l = nodes.length; i < l; i++) {
107
- nodes[i].__addChild(this);
108
- }
109
- }
110
- }
111
-
112
- __detach() {
113
- const nodes = this.__inputNodes;
114
-
115
- if (nodes) {
116
- for (let i = 0, l = nodes.length; i < l; i++) {
117
- nodes[i].__removeChild(this);
118
- }
119
- }
120
-
121
- this.__nativeTearDown();
122
- }
123
-
124
- __getValue() {
125
- if (!(callID in this.__lastLoopID) || this.__lastLoopID[callID] < loopID) {
126
- this.__lastLoopID[callID] = loopID;
127
- const result = this.__onEvaluate();
128
- this.__memoizedValue[callID] = result;
129
- return result;
130
- }
131
- return this.__memoizedValue[callID];
132
- }
133
-
134
- __forceUpdateCache(newValue) {
135
- this.__memoizedValue[callID] = newValue;
136
- this.__markUpdated();
137
- }
138
-
139
- __dangerouslyRescheduleEvaluate() {
140
- this.__lastLoopID[callID] = -1;
141
- this.__markUpdated();
142
- }
143
-
144
- __markUpdated() {
145
- UPDATED_NODES.push(this);
146
- if (!propUpdatesEnqueued) {
147
- propUpdatesEnqueued = scheduleUpdates(runPropUpdates);
148
- }
149
- }
150
-
151
- __nativeInitialize() {
152
- if (!this.__initialized) {
153
- ReanimatedModule.createNode(this.__nodeID, { ...this.__nodeConfig });
154
- this.__initialized = true;
155
- }
156
- }
157
-
158
- __nativeTearDown() {
159
- if (this.__initialized) {
160
- ReanimatedModule.dropNode(this.__nodeID);
161
- this.__initialized = false;
162
- }
163
- }
164
-
165
- isNativelyInitialized() {
166
- return this.__initialized;
167
- }
168
-
169
- __onEvaluate() {
170
- throw new Error('Missing implementation of onEvaluate');
171
- }
172
-
173
- __getProps() {
174
- return this.__getValue();
175
- }
176
-
177
- __getChildren() {
178
- return this.__children;
179
- }
180
-
181
- __addChild(child) {
182
- if (this.__children.length === 0) {
183
- this.__attach();
184
- }
185
- this.__children.push(child);
186
- child.__nativeInitialize();
187
-
188
- if (ReanimatedModule.connectNodes) {
189
- ReanimatedModule.connectNodes(this.__nodeID, child.__nodeID);
190
- } else {
191
- child.__dangerouslyRescheduleEvaluate();
192
- }
193
- }
194
-
195
- __removeChild(child) {
196
- const index = this.__children.indexOf(child);
197
- if (index === -1) {
198
- console.warn("Trying to remove a child that doesn't exist");
199
- return;
200
- }
201
-
202
- if (ReanimatedModule.disconnectNodes) {
203
- ReanimatedModule.disconnectNodes(this.__nodeID, child.__nodeID);
204
- }
205
-
206
- this.__children.splice(index, 1);
207
- if (this.__children.length === 0) {
208
- this.__detach();
209
- }
210
- }
211
-
212
- _connectAnimatedView(nativeViewTag) {
213
- if (ReanimatedModule.connectNodeToView) {
214
- ReanimatedModule.connectNodeToView(this.__nodeID, nativeViewTag);
215
- } else {
216
- this.__dangerouslyRescheduleEvaluate();
217
- }
218
- }
219
-
220
- _disconnectAnimatedView(nativeViewTag) {
221
- ReanimatedModule.disconnectNodeFromView(this.__nodeID, nativeViewTag);
222
- }
223
- }