1 #include "NativeReanimatedModuleSpec.h"
2
3 #include <utility>
4
5 #define SPEC_PREFIX(FN_NAME) __hostFunction_NativeReanimatedModuleSpec_##FN_NAME
6
7 namespace reanimated {
8
SPEC_PREFIX(installCoreFunctions)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
SPEC_PREFIX(makeShareableClone)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
SPEC_PREFIX(makeSynchronizedDataHolder)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
SPEC_PREFIX(getDataSynchronously)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
SPEC_PREFIX(scheduleOnUI)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
SPEC_PREFIX(registerEventHandler)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
SPEC_PREFIX(unregisterEventHandler)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
SPEC_PREFIX(getViewProp)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
SPEC_PREFIX(enableLayoutAnimations)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
SPEC_PREFIX(registerSensor)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
SPEC_PREFIX(unregisterSensor)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
SPEC_PREFIX(configureProps)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
SPEC_PREFIX(subscribeForKeyboardEvents)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
SPEC_PREFIX(unsubscribeFromKeyboardEvents)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
SPEC_PREFIX(configureLayoutAnimation)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
NativeReanimatedModuleSpec(std::shared_ptr<CallInvoker> jsInvoker)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