1 #include "NativeReanimatedModuleSpec.h"
2 
3 #include <utility>
4 
5 #define SPEC_PREFIX(FN_NAME) __hostFunction_NativeReanimatedModuleSpec_##FN_NAME
6 
7 namespace ABI49_0_0reanimated {
8 
9 static jsi::Value SPEC_PREFIX(installCoreFunctions)(
10     jsi::Runtime &rt,
11     TurboModule &turboModule,
12     const jsi::Value *args,
13     size_t count) {
14   static_cast<NativeReanimatedModuleSpec *>(&turboModule)
15       ->installCoreFunctions(rt, std::move(args[0]), std::move(args[1]));
16   return jsi::Value::undefined();
17 }
18 
19 // SharedValue
20 
21 static jsi::Value SPEC_PREFIX(makeShareableClone)(
22     jsi::Runtime &rt,
23     TurboModule &turboModule,
24     const jsi::Value *args,
25     size_t count) {
26   return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
27       ->makeShareableClone(rt, std::move(args[0]), std::move(args[1]));
28 }
29 
30 // Sync methods
31 
32 static jsi::Value SPEC_PREFIX(makeSynchronizedDataHolder)(
33     jsi::Runtime &rt,
34     TurboModule &turboModule,
35     const jsi::Value *args,
36     size_t count) {
37   return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
38       ->makeSynchronizedDataHolder(rt, std::move(args[0]));
39 }
40 
41 static jsi::Value SPEC_PREFIX(getDataSynchronously)(
42     jsi::Runtime &rt,
43     TurboModule &turboModule,
44     const jsi::Value *args,
45     size_t count) {
46   return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
47       ->getDataSynchronously(rt, std::move(args[0]));
48 }
49 
50 // scheduler
51 
52 static jsi::Value SPEC_PREFIX(scheduleOnUI)(
53     jsi::Runtime &rt,
54     TurboModule &turboModule,
55     const jsi::Value *args,
56     size_t count) {
57   static_cast<NativeReanimatedModuleSpec *>(&turboModule)
58       ->scheduleOnUI(rt, std::move(args[0]));
59   return jsi::Value::undefined();
60 }
61 
62 static jsi::Value SPEC_PREFIX(registerEventHandler)(
63     jsi::Runtime &rt,
64     TurboModule &turboModule,
65     const jsi::Value *args,
66     size_t count) {
67   return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
68       ->registerEventHandler(rt, std::move(args[0]), std::move(args[1]));
69 }
70 
71 static jsi::Value SPEC_PREFIX(unregisterEventHandler)(
72     jsi::Runtime &rt,
73     TurboModule &turboModule,
74     const jsi::Value *args,
75     size_t count) {
76   static_cast<NativeReanimatedModuleSpec *>(&turboModule)
77       ->unregisterEventHandler(rt, std::move(args[0]));
78   return jsi::Value::undefined();
79 }
80 
81 static jsi::Value SPEC_PREFIX(getViewProp)(
82     jsi::Runtime &rt,
83     TurboModule &turboModule,
84     const jsi::Value *args,
85     size_t count) {
86   static_cast<NativeReanimatedModuleSpec *>(&turboModule)
87       ->getViewProp(
88           rt, std::move(args[0]), std::move(args[1]), std::move(args[2]));
89   return jsi::Value::undefined();
90 }
91 
92 static jsi::Value SPEC_PREFIX(enableLayoutAnimations)(
93     jsi::Runtime &rt,
94     TurboModule &turboModule,
95     const jsi::Value *args,
96     size_t count) {
97   static_cast<NativeReanimatedModuleSpec *>(&turboModule)
98       ->enableLayoutAnimations(rt, std::move(args[0]));
99   return jsi::Value::undefined();
100 }
101 
102 static jsi::Value SPEC_PREFIX(registerSensor)(
103     jsi::Runtime &rt,
104     TurboModule &turboModule,
105     const jsi::Value *args,
106     size_t count) {
107   return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
108       ->registerSensor(
109           rt,
110           std::move(args[0]),
111           std::move(args[1]),
112           std::move(args[2]),
113           std::move(args[3]));
114 }
115 
116 static jsi::Value SPEC_PREFIX(unregisterSensor)(
117     jsi::Runtime &rt,
118     TurboModule &turboModule,
119     const jsi::Value *args,
120     size_t count) {
121   static_cast<NativeReanimatedModuleSpec *>(&turboModule)
122       ->unregisterSensor(rt, std::move(args[0]));
123   return jsi::Value::undefined();
124 }
125 
126 static jsi::Value SPEC_PREFIX(configureProps)(
127     jsi::Runtime &rt,
128     TurboModule &turboModule,
129     const jsi::Value *args,
130     size_t count) {
131   static_cast<NativeReanimatedModuleSpec *>(&turboModule)
132       ->configureProps(rt, std::move(args[0]), std::move(args[1]));
133   return jsi::Value::undefined();
134 }
135 
136 static jsi::Value SPEC_PREFIX(subscribeForKeyboardEvents)(
137     jsi::Runtime &rt,
138     TurboModule &turboModule,
139     const jsi::Value *args,
140     size_t count) {
141   return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
142       ->subscribeForKeyboardEvents(rt, std::move(args[0]), std::move(args[1]));
143 }
144 
145 static jsi::Value SPEC_PREFIX(unsubscribeFromKeyboardEvents)(
146     jsi::Runtime &rt,
147     TurboModule &turboModule,
148     const jsi::Value *args,
149     size_t count) {
150   static_cast<NativeReanimatedModuleSpec *>(&turboModule)
151       ->unsubscribeFromKeyboardEvents(rt, std::move(args[0]));
152   return jsi::Value::undefined();
153 }
154 
155 static jsi::Value SPEC_PREFIX(configureLayoutAnimation)(
156     jsi::Runtime &rt,
157     TurboModule &turboModule,
158     const jsi::Value *args,
159     size_t count) {
160   return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
161       ->configureLayoutAnimation(
162           rt,
163           std::move(args[0]),
164           std::move(args[1]),
165           std::move(args[2]),
166           std::move(args[3]));
167 }
168 
169 NativeReanimatedModuleSpec::NativeReanimatedModuleSpec(
170     std::shared_ptr<CallInvoker> jsInvoker)
171     : TurboModule("NativeReanimated", jsInvoker) {
172   methodMap_["installCoreFunctions"] =
173       MethodMetadata{2, SPEC_PREFIX(installCoreFunctions)};
174 
175   methodMap_["makeShareableClone"] =
176       MethodMetadata{2, SPEC_PREFIX(makeShareableClone)};
177 
178   methodMap_["makeSynchronizedDataHolder"] =
179       MethodMetadata{1, SPEC_PREFIX(makeSynchronizedDataHolder)};
180   methodMap_["getDataSynchronously"] =
181       MethodMetadata{1, SPEC_PREFIX(getDataSynchronously)};
182 
183   methodMap_["scheduleOnUI"] = MethodMetadata{1, SPEC_PREFIX(scheduleOnUI)};
184 
185   methodMap_["registerEventHandler"] =
186       MethodMetadata{2, SPEC_PREFIX(registerEventHandler)};
187   methodMap_["unregisterEventHandler"] =
188       MethodMetadata{1, SPEC_PREFIX(unregisterEventHandler)};
189 
190   methodMap_["getViewProp"] = MethodMetadata{3, SPEC_PREFIX(getViewProp)};
191   methodMap_["enableLayoutAnimations"] =
192       MethodMetadata{2, SPEC_PREFIX(enableLayoutAnimations)};
193   methodMap_["registerSensor"] = MethodMetadata{4, SPEC_PREFIX(registerSensor)};
194   methodMap_["unregisterSensor"] =
195       MethodMetadata{1, SPEC_PREFIX(unregisterSensor)};
196   methodMap_["configureProps"] = MethodMetadata{2, SPEC_PREFIX(configureProps)};
197   methodMap_["subscribeForKeyboardEvents"] =
198       MethodMetadata{2, SPEC_PREFIX(subscribeForKeyboardEvents)};
199   methodMap_["unsubscribeFromKeyboardEvents"] =
200       MethodMetadata{1, SPEC_PREFIX(unsubscribeFromKeyboardEvents)};
201 
202   methodMap_["configureLayoutAnimation"] =
203       MethodMetadata{4, SPEC_PREFIX(configureLayoutAnimation)};
204 }
205 } // namespace reanimated
206