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