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