1a48bc6c0SBrent Vatne #include "NativeReanimatedModuleSpec.h"
2a48bc6c0SBrent Vatne
304819bfdSŁukasz Kosmaty #include <utility>
404819bfdSŁukasz Kosmaty
53b78aaffSTomasz Sapeta #define SPEC_PREFIX(FN_NAME) __hostFunction_NativeReanimatedModuleSpec_##FN_NAME
63b78aaffSTomasz Sapeta
7a48bc6c0SBrent Vatne namespace reanimated {
8a48bc6c0SBrent Vatne
SPEC_PREFIX(installCoreFunctions)93b78aaffSTomasz Sapeta static jsi::Value SPEC_PREFIX(installCoreFunctions)(
10a48bc6c0SBrent Vatne jsi::Runtime &rt,
11a48bc6c0SBrent Vatne TurboModule &turboModule,
12a48bc6c0SBrent Vatne const jsi::Value *args,
13a48bc6c0SBrent Vatne size_t count) {
14a48bc6c0SBrent Vatne static_cast<NativeReanimatedModuleSpec *>(&turboModule)
15*5f154df9Saleqsio ->installCoreFunctions(rt, std::move(args[0]), std::move(args[1]));
16a48bc6c0SBrent Vatne return jsi::Value::undefined();
17a48bc6c0SBrent Vatne }
18a48bc6c0SBrent Vatne
19a48bc6c0SBrent Vatne // SharedValue
20a48bc6c0SBrent Vatne
SPEC_PREFIX(makeShareableClone)21*5f154df9Saleqsio static jsi::Value SPEC_PREFIX(makeShareableClone)(
22a48bc6c0SBrent Vatne jsi::Runtime &rt,
23a48bc6c0SBrent Vatne TurboModule &turboModule,
24a48bc6c0SBrent Vatne const jsi::Value *args,
25a48bc6c0SBrent Vatne size_t count) {
26a48bc6c0SBrent Vatne return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
27*5f154df9Saleqsio ->makeShareableClone(rt, std::move(args[0]), std::move(args[1]));
28a48bc6c0SBrent Vatne }
29a48bc6c0SBrent Vatne
30*5f154df9Saleqsio // Sync methods
31*5f154df9Saleqsio
SPEC_PREFIX(makeSynchronizedDataHolder)32*5f154df9Saleqsio static jsi::Value SPEC_PREFIX(makeSynchronizedDataHolder)(
33a48bc6c0SBrent Vatne jsi::Runtime &rt,
34a48bc6c0SBrent Vatne TurboModule &turboModule,
35a48bc6c0SBrent Vatne const jsi::Value *args,
36a48bc6c0SBrent Vatne size_t count) {
37a48bc6c0SBrent Vatne return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
38*5f154df9Saleqsio ->makeSynchronizedDataHolder(rt, std::move(args[0]));
39a48bc6c0SBrent Vatne }
40a48bc6c0SBrent Vatne
SPEC_PREFIX(getDataSynchronously)41*5f154df9Saleqsio static jsi::Value SPEC_PREFIX(getDataSynchronously)(
42a48bc6c0SBrent Vatne jsi::Runtime &rt,
43a48bc6c0SBrent Vatne TurboModule &turboModule,
44a48bc6c0SBrent Vatne const jsi::Value *args,
45a48bc6c0SBrent Vatne size_t count) {
46a48bc6c0SBrent Vatne return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
47*5f154df9Saleqsio ->getDataSynchronously(rt, std::move(args[0]));
48a48bc6c0SBrent Vatne }
49a48bc6c0SBrent Vatne
50*5f154df9Saleqsio // scheduler
51a48bc6c0SBrent Vatne
SPEC_PREFIX(scheduleOnUI)52*5f154df9Saleqsio static jsi::Value SPEC_PREFIX(scheduleOnUI)(
53a48bc6c0SBrent Vatne jsi::Runtime &rt,
54a48bc6c0SBrent Vatne TurboModule &turboModule,
55a48bc6c0SBrent Vatne const jsi::Value *args,
56a48bc6c0SBrent Vatne size_t count) {
57a48bc6c0SBrent Vatne static_cast<NativeReanimatedModuleSpec *>(&turboModule)
58*5f154df9Saleqsio ->scheduleOnUI(rt, std::move(args[0]));
59a48bc6c0SBrent Vatne return jsi::Value::undefined();
60a48bc6c0SBrent Vatne }
61a48bc6c0SBrent Vatne
SPEC_PREFIX(registerEventHandler)623b78aaffSTomasz Sapeta static jsi::Value SPEC_PREFIX(registerEventHandler)(
63a48bc6c0SBrent Vatne jsi::Runtime &rt,
64a48bc6c0SBrent Vatne TurboModule &turboModule,
65a48bc6c0SBrent Vatne const jsi::Value *args,
66a48bc6c0SBrent Vatne size_t count) {
67a48bc6c0SBrent Vatne return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
68a48bc6c0SBrent Vatne ->registerEventHandler(rt, std::move(args[0]), std::move(args[1]));
69a48bc6c0SBrent Vatne }
70a48bc6c0SBrent Vatne
SPEC_PREFIX(unregisterEventHandler)713b78aaffSTomasz Sapeta static jsi::Value SPEC_PREFIX(unregisterEventHandler)(
72a48bc6c0SBrent Vatne jsi::Runtime &rt,
73a48bc6c0SBrent Vatne TurboModule &turboModule,
74a48bc6c0SBrent Vatne const jsi::Value *args,
75a48bc6c0SBrent Vatne size_t count) {
76a48bc6c0SBrent Vatne static_cast<NativeReanimatedModuleSpec *>(&turboModule)
77a48bc6c0SBrent Vatne ->unregisterEventHandler(rt, std::move(args[0]));
78a48bc6c0SBrent Vatne return jsi::Value::undefined();
79a48bc6c0SBrent Vatne }
80a48bc6c0SBrent Vatne
SPEC_PREFIX(getViewProp)813b78aaffSTomasz Sapeta static jsi::Value SPEC_PREFIX(getViewProp)(
82a48bc6c0SBrent Vatne jsi::Runtime &rt,
83a48bc6c0SBrent Vatne TurboModule &turboModule,
84a48bc6c0SBrent Vatne const jsi::Value *args,
85a48bc6c0SBrent Vatne size_t count) {
86a48bc6c0SBrent Vatne static_cast<NativeReanimatedModuleSpec *>(&turboModule)
87c7e4709dSKudo Chien ->getViewProp(
88c7e4709dSKudo Chien rt, std::move(args[0]), std::move(args[1]), std::move(args[2]));
89a48bc6c0SBrent Vatne return jsi::Value::undefined();
90a48bc6c0SBrent Vatne }
91a48bc6c0SBrent Vatne
SPEC_PREFIX(enableLayoutAnimations)923b78aaffSTomasz Sapeta static jsi::Value SPEC_PREFIX(enableLayoutAnimations)(
93c7e4709dSKudo Chien jsi::Runtime &rt,
94c7e4709dSKudo Chien TurboModule &turboModule,
95c7e4709dSKudo Chien const jsi::Value *args,
96c7e4709dSKudo Chien size_t count) {
97c7e4709dSKudo Chien static_cast<NativeReanimatedModuleSpec *>(&turboModule)
98c7e4709dSKudo Chien ->enableLayoutAnimations(rt, std::move(args[0]));
99c7e4709dSKudo Chien return jsi::Value::undefined();
100c7e4709dSKudo Chien }
101c7e4709dSKudo Chien
SPEC_PREFIX(registerSensor)1023b78aaffSTomasz Sapeta static jsi::Value SPEC_PREFIX(registerSensor)(
1033b78aaffSTomasz Sapeta jsi::Runtime &rt,
1043b78aaffSTomasz Sapeta TurboModule &turboModule,
1053b78aaffSTomasz Sapeta const jsi::Value *args,
1063b78aaffSTomasz Sapeta size_t count) {
1073b78aaffSTomasz Sapeta return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
1083b78aaffSTomasz Sapeta ->registerSensor(
109*5f154df9Saleqsio rt,
110*5f154df9Saleqsio std::move(args[0]),
111*5f154df9Saleqsio std::move(args[1]),
112*5f154df9Saleqsio std::move(args[2]),
113*5f154df9Saleqsio std::move(args[3]));
1143b78aaffSTomasz Sapeta }
1153b78aaffSTomasz Sapeta
SPEC_PREFIX(unregisterSensor)1163b78aaffSTomasz Sapeta static jsi::Value SPEC_PREFIX(unregisterSensor)(
1173b78aaffSTomasz Sapeta jsi::Runtime &rt,
1183b78aaffSTomasz Sapeta TurboModule &turboModule,
1193b78aaffSTomasz Sapeta const jsi::Value *args,
1203b78aaffSTomasz Sapeta size_t count) {
1213b78aaffSTomasz Sapeta static_cast<NativeReanimatedModuleSpec *>(&turboModule)
1223b78aaffSTomasz Sapeta ->unregisterSensor(rt, std::move(args[0]));
1233b78aaffSTomasz Sapeta return jsi::Value::undefined();
1243b78aaffSTomasz Sapeta }
1253b78aaffSTomasz Sapeta
SPEC_PREFIX(configureProps)1263b78aaffSTomasz Sapeta static jsi::Value SPEC_PREFIX(configureProps)(
1273b78aaffSTomasz Sapeta jsi::Runtime &rt,
1283b78aaffSTomasz Sapeta TurboModule &turboModule,
1293b78aaffSTomasz Sapeta const jsi::Value *args,
1303b78aaffSTomasz Sapeta size_t count) {
1313b78aaffSTomasz Sapeta static_cast<NativeReanimatedModuleSpec *>(&turboModule)
1323b78aaffSTomasz Sapeta ->configureProps(rt, std::move(args[0]), std::move(args[1]));
1333b78aaffSTomasz Sapeta return jsi::Value::undefined();
1343b78aaffSTomasz Sapeta }
1353b78aaffSTomasz Sapeta
SPEC_PREFIX(subscribeForKeyboardEvents)13604819bfdSŁukasz Kosmaty static jsi::Value SPEC_PREFIX(subscribeForKeyboardEvents)(
13704819bfdSŁukasz Kosmaty jsi::Runtime &rt,
13804819bfdSŁukasz Kosmaty TurboModule &turboModule,
13904819bfdSŁukasz Kosmaty const jsi::Value *args,
14004819bfdSŁukasz Kosmaty size_t count) {
14104819bfdSŁukasz Kosmaty return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
142*5f154df9Saleqsio ->subscribeForKeyboardEvents(rt, std::move(args[0]), std::move(args[1]));
14304819bfdSŁukasz Kosmaty }
14404819bfdSŁukasz Kosmaty
SPEC_PREFIX(unsubscribeFromKeyboardEvents)14504819bfdSŁukasz Kosmaty static jsi::Value SPEC_PREFIX(unsubscribeFromKeyboardEvents)(
14604819bfdSŁukasz Kosmaty jsi::Runtime &rt,
14704819bfdSŁukasz Kosmaty TurboModule &turboModule,
14804819bfdSŁukasz Kosmaty const jsi::Value *args,
14904819bfdSŁukasz Kosmaty size_t count) {
15004819bfdSŁukasz Kosmaty static_cast<NativeReanimatedModuleSpec *>(&turboModule)
15104819bfdSŁukasz Kosmaty ->unsubscribeFromKeyboardEvents(rt, std::move(args[0]));
15204819bfdSŁukasz Kosmaty return jsi::Value::undefined();
15304819bfdSŁukasz Kosmaty }
15404819bfdSŁukasz Kosmaty
SPEC_PREFIX(configureLayoutAnimation)155*5f154df9Saleqsio static jsi::Value SPEC_PREFIX(configureLayoutAnimation)(
156*5f154df9Saleqsio jsi::Runtime &rt,
157*5f154df9Saleqsio TurboModule &turboModule,
158*5f154df9Saleqsio const jsi::Value *args,
159*5f154df9Saleqsio size_t count) {
160*5f154df9Saleqsio return static_cast<NativeReanimatedModuleSpec *>(&turboModule)
161*5f154df9Saleqsio ->configureLayoutAnimation(
162*5f154df9Saleqsio rt,
163*5f154df9Saleqsio std::move(args[0]),
164*5f154df9Saleqsio std::move(args[1]),
165*5f154df9Saleqsio std::move(args[2]),
166*5f154df9Saleqsio std::move(args[3]));
167*5f154df9Saleqsio }
168*5f154df9Saleqsio
NativeReanimatedModuleSpec(std::shared_ptr<CallInvoker> jsInvoker)169c7e4709dSKudo Chien NativeReanimatedModuleSpec::NativeReanimatedModuleSpec(
170c7e4709dSKudo Chien std::shared_ptr<CallInvoker> jsInvoker)
171a48bc6c0SBrent Vatne : TurboModule("NativeReanimated", jsInvoker) {
1723b78aaffSTomasz Sapeta methodMap_["installCoreFunctions"] =
173*5f154df9Saleqsio MethodMetadata{2, SPEC_PREFIX(installCoreFunctions)};
174a48bc6c0SBrent Vatne
175*5f154df9Saleqsio methodMap_["makeShareableClone"] =
176*5f154df9Saleqsio MethodMetadata{2, SPEC_PREFIX(makeShareableClone)};
177a48bc6c0SBrent Vatne
178*5f154df9Saleqsio methodMap_["makeSynchronizedDataHolder"] =
179*5f154df9Saleqsio MethodMetadata{1, SPEC_PREFIX(makeSynchronizedDataHolder)};
180*5f154df9Saleqsio methodMap_["getDataSynchronously"] =
181*5f154df9Saleqsio MethodMetadata{1, SPEC_PREFIX(getDataSynchronously)};
182*5f154df9Saleqsio
183*5f154df9Saleqsio methodMap_["scheduleOnUI"] = MethodMetadata{1, SPEC_PREFIX(scheduleOnUI)};
184a48bc6c0SBrent Vatne
1853b78aaffSTomasz Sapeta methodMap_["registerEventHandler"] =
1863b78aaffSTomasz Sapeta MethodMetadata{2, SPEC_PREFIX(registerEventHandler)};
1873b78aaffSTomasz Sapeta methodMap_["unregisterEventHandler"] =
1883b78aaffSTomasz Sapeta MethodMetadata{1, SPEC_PREFIX(unregisterEventHandler)};
189a48bc6c0SBrent Vatne
1903b78aaffSTomasz Sapeta methodMap_["getViewProp"] = MethodMetadata{3, SPEC_PREFIX(getViewProp)};
1913b78aaffSTomasz Sapeta methodMap_["enableLayoutAnimations"] =
1923b78aaffSTomasz Sapeta MethodMetadata{2, SPEC_PREFIX(enableLayoutAnimations)};
193*5f154df9Saleqsio methodMap_["registerSensor"] = MethodMetadata{4, SPEC_PREFIX(registerSensor)};
1943b78aaffSTomasz Sapeta methodMap_["unregisterSensor"] =
1953b78aaffSTomasz Sapeta MethodMetadata{1, SPEC_PREFIX(unregisterSensor)};
1963b78aaffSTomasz Sapeta methodMap_["configureProps"] = MethodMetadata{2, SPEC_PREFIX(configureProps)};
19704819bfdSŁukasz Kosmaty methodMap_["subscribeForKeyboardEvents"] =
198*5f154df9Saleqsio MethodMetadata{2, SPEC_PREFIX(subscribeForKeyboardEvents)};
19904819bfdSŁukasz Kosmaty methodMap_["unsubscribeFromKeyboardEvents"] =
20004819bfdSŁukasz Kosmaty MethodMetadata{1, SPEC_PREFIX(unsubscribeFromKeyboardEvents)};
201*5f154df9Saleqsio
202*5f154df9Saleqsio methodMap_["configureLayoutAnimation"] =
203*5f154df9Saleqsio MethodMetadata{4, SPEC_PREFIX(configureLayoutAnimation)};
204a48bc6c0SBrent Vatne }
205c7e4709dSKudo Chien } // namespace reanimated
206