1 #pragma once
2 
3 #include <memory>
4 #include <string>
5 #include <vector>
6 
7 #ifdef ANDROID
8 #include "TurboModule.h"
9 #else
10 #include <ABI49_0_0ReactCommon/ABI49_0_0TurboModule.h>
11 #endif
12 
13 #include <ABI49_0_0ReactCommon/ABI49_0_0CallInvoker.h>
14 
15 using namespace ABI49_0_0facebook;
16 using namespace ABI49_0_0React;
17 
18 namespace ABI49_0_0reanimated {
19 
20 class JSI_EXPORT NativeReanimatedModuleSpec : public TurboModule {
21  protected:
22   explicit NativeReanimatedModuleSpec(std::shared_ptr<CallInvoker> jsInvoker);
23 
24  public:
25   virtual void installCoreFunctions(
26       jsi::Runtime &rt,
27       const jsi::Value &callGuard,
28       const jsi::Value &valueUnpacker) = 0;
29 
30   // SharedValue
31   virtual jsi::Value makeShareableClone(
32       jsi::Runtime &rt,
33       const jsi::Value &value,
34       const jsi::Value &shouldRetainRemote) = 0;
35 
36   // Synchronized data objects
37   virtual jsi::Value makeSynchronizedDataHolder(
38       jsi::Runtime &rt,
39       const jsi::Value &initialShareable) = 0;
40   virtual jsi::Value getDataSynchronously(
41       jsi::Runtime &rt,
42       const jsi::Value &synchronizedDataHolderRef) = 0;
43 
44   // Scheduling
45   virtual void scheduleOnUI(jsi::Runtime &rt, const jsi::Value &worklet) = 0;
46 
47   // events
48   virtual jsi::Value registerEventHandler(
49       jsi::Runtime &rt,
50       const jsi::Value &eventHash,
51       const jsi::Value &worklet) = 0;
52   virtual void unregisterEventHandler(
53       jsi::Runtime &rt,
54       const jsi::Value &registrationId) = 0;
55 
56   // views
57   virtual jsi::Value getViewProp(
58       jsi::Runtime &rt,
59       const jsi::Value &viewTag,
60       const jsi::Value &propName,
61       const jsi::Value &callback) = 0;
62 
63   // sensors
64   virtual jsi::Value registerSensor(
65       jsi::Runtime &rt,
66       const jsi::Value &sensorType,
67       const jsi::Value &interval,
68       const jsi::Value &iosReferenceFrame,
69       const jsi::Value &sensorDataContainer) = 0;
70   virtual void unregisterSensor(
71       jsi::Runtime &rt,
72       const jsi::Value &sensorId) = 0;
73 
74   // keyboard
75   virtual jsi::Value subscribeForKeyboardEvents(
76       jsi::Runtime &rt,
77       const jsi::Value &keyboardEventContainer,
78       const jsi::Value &isStatusBarTranslucent) = 0;
79   virtual void unsubscribeFromKeyboardEvents(
80       jsi::Runtime &rt,
81       const jsi::Value &listenerId) = 0;
82 
83   // other
84   virtual jsi::Value enableLayoutAnimations(
85       jsi::Runtime &rt,
86       const jsi::Value &config) = 0;
87   virtual jsi::Value configureProps(
88       jsi::Runtime &rt,
89       const jsi::Value &uiProps,
90       const jsi::Value &nativeProps) = 0;
91 
92   // layout animations
93   virtual jsi::Value configureLayoutAnimation(
94       jsi::Runtime &rt,
95       const jsi::Value &viewTag,
96       const jsi::Value &type,
97       const jsi::Value &sharedTransitionTag,
98       const jsi::Value &config) = 0;
99 };
100 
101 } // namespace reanimated
102