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