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