1 #pragma once 2 3 #include <jsi/jsi.h> 4 5 #ifdef RCT_NEW_ARCH_ENABLED 6 #include <react/renderer/core/ReactPrimitives.h> 7 #endif 8 9 #include <string> 10 #include <utility> 11 #include <vector> 12 13 using namespace facebook; 14 15 #ifdef RCT_NEW_ARCH_ENABLED 16 using namespace react; 17 #endif 18 19 namespace reanimated { 20 21 #ifdef RCT_NEW_ARCH_ENABLED 22 23 using SynchronouslyUpdateUIPropsFunction = 24 std::function<void(jsi::Runtime &rt, Tag tag, const jsi::Value &props)>; 25 using UpdatePropsFunction = std::function<void( 26 jsi::Runtime &rt, 27 const jsi::Value &shadowNodeValue, 28 const jsi::Value &props)>; 29 using RemoveShadowNodeFromRegistryFunction = 30 std::function<void(jsi::Runtime &rt, const jsi::Value &tag)>; 31 using DispatchCommandFunction = std::function<void( 32 jsi::Runtime &rt, 33 const jsi::Value &shadowNodeValue, 34 const jsi::Value &commandNameValue, 35 const jsi::Value &argsValue)>; 36 using MeasureFunction = std::function< 37 jsi::Value(jsi::Runtime &rt, const jsi::Value &shadowNodeValue)>; 38 39 #else 40 41 using UpdatePropsFunction = std::function<void( 42 jsi::Runtime &rt, 43 int viewTag, 44 const jsi::Value &viewName, 45 jsi::Object object)>; 46 using ScrollToFunction = std::function<void(int, double, double, bool)>; 47 using MeasureFunction = 48 std::function<std::vector<std::pair<std::string, double>>(int)>; 49 50 #endif // RCT_NEW_ARCH_ENABLED 51 52 using RequestRender = 53 std::function<void(std::function<void(double)>, jsi::Runtime &rt)>; 54 using TimeProviderFunction = std::function<double(void)>; 55 56 using ProgressLayoutAnimationFunction = 57 std::function<void(int, jsi::Object newProps, bool isSharedTransition)>; 58 using EndLayoutAnimationFunction = std::function<void(int, bool, bool)>; 59 60 using RegisterSensorFunction = 61 std::function<int(int, int, int, std::function<void(double[], int)>)>; 62 using UnregisterSensorFunction = std::function<void(int)>; 63 using SetGestureStateFunction = std::function<void(int, int)>; 64 using ConfigurePropsFunction = std::function<void( 65 jsi::Runtime &rt, 66 const jsi::Value &uiProps, 67 const jsi::Value &nativeProps)>; 68 using KeyboardEventSubscribeFunction = 69 std::function<int(std::function<void(int, int)>, bool)>; 70 using KeyboardEventUnsubscribeFunction = std::function<void(int)>; 71 using MaybeFlushUIUpdatesQueueFunction = std::function<void()>; 72 73 struct PlatformDepMethodsHolder { 74 RequestRender requestRender; 75 #ifdef RCT_NEW_ARCH_ENABLED 76 SynchronouslyUpdateUIPropsFunction synchronouslyUpdateUIPropsFunction; 77 #else 78 UpdatePropsFunction updatePropsFunction; 79 ScrollToFunction scrollToFunction; 80 MeasureFunction measureFunction; 81 ConfigurePropsFunction configurePropsFunction; 82 #endif 83 TimeProviderFunction getCurrentTime; 84 ProgressLayoutAnimationFunction progressLayoutAnimation; 85 EndLayoutAnimationFunction endLayoutAnimation; 86 RegisterSensorFunction registerSensor; 87 UnregisterSensorFunction unregisterSensor; 88 SetGestureStateFunction setGestureStateFunction; 89 KeyboardEventSubscribeFunction subscribeForKeyboardEvents; 90 KeyboardEventUnsubscribeFunction unsubscribeFromKeyboardEvents; 91 MaybeFlushUIUpdatesQueueFunction maybeFlushUIUpdatesQueueFunction; 92 }; 93 94 } // namespace reanimated 95