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 
72 struct PlatformDepMethodsHolder {
73   RequestRender requestRender;
74 #ifdef RCT_NEW_ARCH_ENABLED
75   SynchronouslyUpdateUIPropsFunction synchronouslyUpdateUIPropsFunction;
76 #else
77   UpdatePropsFunction updatePropsFunction;
78   ScrollToFunction scrollToFunction;
79   MeasureFunction measureFunction;
80   ConfigurePropsFunction configurePropsFunction;
81 #endif
82   TimeProviderFunction getCurrentTime;
83   ProgressLayoutAnimationFunction progressLayoutAnimation;
84   EndLayoutAnimationFunction endLayoutAnimation;
85   RegisterSensorFunction registerSensor;
86   UnregisterSensorFunction unregisterSensor;
87   SetGestureStateFunction setGestureStateFunction;
88   KeyboardEventSubscribeFunction subscribeForKeyboardEvents;
89   KeyboardEventUnsubscribeFunction unsubscribeFromKeyboardEvents;
90 };
91 
92 } // namespace reanimated
93